我有一个字典 -> var dictionary = [String : [String]]()
我想在字典的数组中附加字符串值。我是这样做的
for (key, value) in dictionary {
dictionary.updateValue(value.append(nameText),forKey: "name")
}
这里,nameText
是一个字符串,我得到一个错误提示,
Cannot use mutating member on immutable value: 'value' is a 'let' constant.
我做错了什么?非常感谢您的帮助。
最佳答案
您的第一个问题是 value
是循环体内的一个 let
常量。您必须将其声明为 var
才能对其进行变异。
您的第二个问题是您正在尝试使用 value.append(nameText)
作为为键设置的值。但是,append()
会原地改变数组,并返回 Void
。
第三,不要使用updateValue(forKey:)
。真的没有意义。请改用下标。
var dictionary = [
"a" : ["a"],
"b" : ["b", "b"],
"c" : ["c", "c", "c"],
]
let nameText = "foo"
for (key, var value) in dictionary {
value.append(nameText)
dictionary["name"] = value
}
现在,这会让您的代码编译,但我非常怀疑这是否真的是您想要做的。您将在每次迭代中覆盖 "name"
键的值,这意味着只有最后一次迭代的值会保留。此外,由于 Dictionary
没有定义的顺序,因此此代码具有不确定的行为。你到底想做什么?
关于arrays - 无法将值添加到字典,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41167176/