更新的字典值不会在数组

时间:2015-07-16 07:20:39

标签: swift dictionary

我刚刚编写了以下代码:

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确实成功了!

enter image description here

1 个答案:

答案 0 :(得分:1)

欢迎来到复制语义世界。当您使用results[0]从阵列中取出第一个项目时,您没有对其进行引用,而是取代该值的副本。这意味着您正在更新的词典不是数组中的词典。

进行更新后,只需用修改过的值替换数组中的第一个值。

var value = dict.updateValue(updateValue, forKey: key)
results[0] = dict
print(results) // "[[Swift: [2: I want to marry you]]]"