【问题标题】:Swift Dictionary Multiple Key Value Pairs - IterationSwift 字典多键值对 - 迭代
【发布时间】:2016-01-04 15:00:55
【问题描述】:

在 Swift 中,我想创建一个字典数组(具有多个键值对),然后遍历每个元素

以下是可能的字典的预期输出。不确定如何声明和初始化它(有点类似于 Ruby 中的哈希数组)

 dictionary = [{id: 1, name: "Apple", category: "Fruit"}, {id: 2, name: "Bee", category: "Insect"}]

我知道如何用一个键值对创建一个字典数组。 例如:

 var airports: [String: String] = ["YYZ": "Toronto Pearson", "DUB": "Dublin"] 

【问题讨论】:

  • 您的airports 变量不是字典数组,只是字典。但是,如果您将其声明为var airports: [[String: String]] = [["YYZ": "Toronto Pearson", "DUB": "Dublin"]],那就是,请注意大括号。

标签: swift dictionary iteration


【解决方案1】:

要声明一个字典数组,请使用:

var arrayOfDictionary: [[String : AnyObject]]  = [["id" :1, "name": "Apple", "category" : "Fruit"],["id" :2, "name": "Microsoft", "category" : "Juice"]]

我看到在您的字典中,您将数字与字符串混合在一起,因此最好使用 AnyObject 而不是 String 作为字典中的数据类型。 如果在这段代码之后,你不必修改这个数组的内容,声明为'let',否则,使用'var'

更新:在循环内初始化:

//create empty array
var emptyArrayOfDictionary = [[String : AnyObject]]()
for x in 2...3 {  //... mean the loop includes last value => x = 2,3
    //add new dictionary for each loop
    emptyArrayOfDictionary.append(["number" : x , "square" : x*x ])
}
//your new array must contain: [["number": 2, "square": 4], ["number": 3, "square": 9]]

【讨论】:

  • 谢谢,这是有道理的。如何在 for 循环中初始化,例如,如果我想:dictionary:[[String: AnyObject]] =[ ["number": 2, "square": 4],["number: 3, "square": 9]] 以下内容不起作用 var dictionary: [[String: AnyObject]] for x in 2...3 { var new = ["number" : x, "square": x*x] 以某种方式将 new 添加到字典}
【解决方案2】:
let dic_1: [String: Int] = ["one": 1, "two": 2]
let dic_2: [String: Int] = ["a": 1, "b": 2]
let list_1 = [dic_1, dic_2]

// or in one step:
let list_2: [[String: Int]] = [["one": 1, "two": 2], ["a": 1, "b": 2]]

for d in list_1 { // or list_2
    print(d)
}

导致

[“一”:1,“二”:2]

[“b”:2,“a”:1]

【讨论】:

    【解决方案3】:
    let airports: [[String: String]] = [["YYZ": "Toronto Pearson", "DUB": "Dublin"]]
    
    for airport in airports {
        print(airport["YYZ"])
    }
    

    【讨论】:

      猜你喜欢
      • 2021-04-05
      • 2017-10-29
      • 1970-01-01
      • 2023-02-02
      • 2011-12-21
      • 1970-01-01
      • 2014-09-12
      • 2015-01-04
      • 2012-11-12
      相关资源
      最近更新 更多