我刚刚编写了以下代码:
var results:[[String:[Int:String]]] = [Dictionary<String, Dictionary<Int,String>>()]
results.removeAll(keepCapacity: false)
results.append(["Swift":[1:"I love you"]])
print(results)
var dict = results[0]
var key = dict[dict.startIndex].0
var updateValue = [2:"I want to marry you"]
var value = dict.updateValue(updateValue, forKey: key)
print(results)
但我发现它不能按预期工作。最终打印仍然输出
[[斯威夫特:[1:我爱你]]]。和dict.updateValue确实成功了!
答案 0 :(得分:1)
欢迎来到复制语义世界。当您使用results[0]
从阵列中取出第一个项目时,您没有对其进行引用,而是取代该值的副本。这意味着您正在更新的词典不是数组中的词典。
进行更新后,只需用修改过的值替换数组中的第一个值。
var value = dict.updateValue(updateValue, forKey: key)
results[0] = dict
print(results) // "[[Swift: [2: I want to marry you]]]"