繁体   English   中英

迭代和变异字典数组Swift 3

[英]Iterate and mutate an Array of Dictionaries Swift 3

我在当前的Swift文档中引用了这一点:

您还可以遍历字典以访问其键值对。 迭代字典时,字典中的每个项目都将作为(键,值)元组返回,并且您可以将(键,值)元组的成员分解为明确命名的常量,以便在for-in循环的主体中使用。 在这里,字典的键被分解为一个名为animalName的常量,而字典的值被分解为一个称为legCount的常量。

让numberOfLegs = [“ spider”:8,“ ant”:6,“ cat”:4]

在numberOfLegs中用于(animalName,legCount){

 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]]含糊不清,没有更多上下文

我一点都不明白。

这里的目标是拥有可变字典的可变数组。 在编程过程中,我想添加新的键值对,但也可以在必要时增加值。 我并没有嫁给这种收藏类型,但我认为它会起作用。

有任何想法吗?

您正在尝试遍历数组,将其视为字典。 您必须遍历数组,然后遍历键/值对

for dictionary in arrayOfMutatingDictionaries{
    for (key,value) in dictionary{
        //Do your stuff
    }
}

添加键/值对非常简单。

for i in 0..< arrayOfMutatingDictionaries.count{
    arrayOfMutatingDictionaries[i][yourkey] = yourvalue
}

您也可以像这样增加现有值

for i in 0..<arrayOfMutatingDictionaries.count{
    for (key,value) in arrayOfMutatingDictionaries[i]{
        arrayOfMutatingDictionaries[i][key] = value+1
    }
}
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 dictionary in arrayOfMutatingDictionaries { // You missed this out!
    for (word, num) in dictionary {
    print(word, num)
    }
}

尝试这个。 然后您将获得预期的结果。

let wordArray = ["Man","Child","Woman","Dog","Rat","Goose"]
var arrayOfMutatingDictionaries = [String]()  
//Here you are doing mistake in above line. You are creating an array of  dictionary ([[String:Int]]) in your code. And you are iterating an array of string (wordArray)

var count = 0

while count < 6
{
     arrayOfMutatingDictionaries.append(wordArray[count])
     count += 1
}

for (wordText) in arrayOfMutatingDictionaries
{
     print(wordText)
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM