arrays - 无法将值添加到字典

标签 arrays swift dictionary

我有一个字典 -> 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/

相关文章:

arrays - 查找负载超过 10% 网络的用户

arrays - 序列化错误

java - 如何在方法中返回数组?

swift - didBeginContact 在 Swift 2 + SpriteKit 中不起作用

ios - Swift 下标错误

java - 将 json 数据映射到 java bean

php - 比较嵌套数组

swift - UITextField 在 SKScene 上不可见

ios - 如何限制 UICollectionView 中的可选单元格

python - 如何使用 Pandas 将csv转换为字典