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
,因为你从来没有为keyid
存储过数组。然后将忽略追加,因为您已经有条件地展开了downloadQ[id]
您需要处理没有密钥数组的情况。nil合并操作符是一种很好的方法。差不多
var theArray = downloadQ[id] ?? [Int]()
theArray.append(indexPath.row)
downloadQ[id] = theArray
你能解释一下你的代码吗,这样我就可以帮你了this@AbhirajsinhThakore附加问题。您应该使用默认值的基于Swift 4字典键的下标