我使用此行在字典中的数组中附加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
我得到了downloadQ:[:]
如何解决?
答案 0 :(得分:0)
例如
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)
那就是它。
答案 1 :(得分:0)
创建字典时,它最初是空的,也就是说,它不包含任何键的任何数组。
当您说downloadQ[id]?.append(indexPath.row)
时,downloadQ[id]
为nil
,因为您从未为密钥id
存储数组。然后忽略附加,因为您有条件地解开downloadQ[id]
。
您需要处理密钥没有数组的情况。零合并运算符是一种很好的方法。像
这样的东西var theArray = downloadQ[id] ?? [Int]()
theArray.append(indexPath.row)
downloadQ[id] = theArray