在字典内的数组中追加int

时间:2018-03-24 06:45:47

标签: 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)")

}

这行检查。

print("downloadQ:\(downloadQ)")

但是我的数组没有在控制台中附加indexPath.row我得到了downloadQ:[:]

如何解决?

2 个答案:

答案 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