【发布时间】:2017-03-02 16:59:53
【问题描述】:
我在当前的 Swift 文档中引用了这个:
您还可以遍历字典以访问其键值对。当字典被迭代时,字典中的每一项都作为 (key, value) 元组返回,您可以将 (key, value) 元组的成员分解为显式命名的常量,以便在 for-in 循环的主体中使用。在这里,字典的键被分解成一个叫做animalName的常量,字典的值被分解成一个叫做legCount的常量。
让 numberOfLegs = [“蜘蛛”:8,“蚂蚁”:6,“猫”:4]
对于(动物名称, legCount) in numberOfLegs {
print("\(animalName)s have \(legCount) legs") }// 蚂蚁有 6 条腿 // 蜘蛛有 8 条腿 // 猫有 4 条腿
但是,当我动态创建字典数组时,该代码不起作用:
let wordArray = ["Man","Child","Woman","Dog","Rat","Goose"]
var arrayOfMutatingDictionaries = [[String:Int]]()
var count = 0
while count < 6
{
arrayOfMutatingDictionaries.append([wordArray[count]:1])
count += 1
}
上面的例程成功地创建了字典数组,但是当我尝试像文档显示的那样迭代它时:
for (wordText, wordCounter) in arrayOfMutatingDictionaries
我收到一个错误:表达式类型 [[String:Int]] 在没有更多上下文的情况下不明确
我完全不明白。
这里的目标是拥有一个可变字典的可变数组。在程序的过程中,我想添加新的键值对,但也可以在必要时增加值。我没有与这种集合类型结婚,但我认为它会起作用。
有什么想法吗?
【问题讨论】:
-
arrayOfMutatingDictionaries是一个 array 而不是字典,因此您将使用for dict in arrayOfMutatingDictionaries { ... }进行迭代。 – 不知道你在期待什么。 -
我期待我已将数组声明为 var,它是可变的,但使用上面的代码模式,这是不可能的。通过
for dict in arrayOfMutatingDictionaries进行迭代,不可能修改字典的值,这是我希望做的。
标签: arrays swift dictionary