Ios 在字典内的数组中追加int

Ios 在字典内的数组中追加int,ios,swift,Ios,Swift,我使用这一行在字典的数组中追加indexPath.row var downloadQ = [Int: [Int]]() var id = 1 override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { downloadQ[id]?.append(indexPath.row) print("downloadQ:\(downloadQ)") } 还有这条线要检

我使用这一行在字典的数组中追加
indexPath.row

var downloadQ = [Int: [Int]]()
var id = 1

override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {

    downloadQ[id]?.append(indexPath.row)
    print("downloadQ:\(downloadQ)")

}
还有这条线要检查

print("downloadQ:\(downloadQ)")
但是我的数组没有追加
indexPath.row
在控制台中我得到了这个
下载Q:[:]

如何修复它

downloadQ[1] = [1,2]
downloadQ[2] = [1,2]

var arr = downloadQ[2]
arr?.append(3)
downloadQ[2] = arr
print(downloadQ)
您所做的只是将新项追加到数组中,但必须在字典中替换该数组。 所以,在附加数组项之后,在字典中分配数组

downloadQ[2] = arr
print(downloadQ)

就是这样。

当您创建字典时,它最初是空的,也就是说,它不包含任何键的数组

当你说
downloadQ[id]?.append(indepath.row)
时,
downloadQ[id]
nil
,因为你从来没有为key
id
存储过数组。然后将忽略追加,因为您已经有条件地展开了
downloadQ[id]

您需要处理没有密钥数组的情况。nil合并操作符是一种很好的方法。差不多

var theArray = downloadQ[id] ?? [Int]()
theArray.append(indexPath.row)
downloadQ[id] = theArray

你能解释一下你的代码吗,这样我就可以帮你了this@AbhirajsinhThakore附加问题。您应该使用默认值的基于Swift 4字典键的下标