2015-10-07 52 views
1

在夫特我想使辞典的阵列(具有多个密钥值对),然后遍历每个元素夫特字典多个键值对 - 迭代

下面是一个可能的字典的预期输出。不知道如何声明和intitialize它(有点类似于哈希值的数组中的红宝石)

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

我知道如何使字典的数组与一个键值对。 例如:

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

你'机场'变量不是一个字典数组,而只是一个字典。但是,如果你声明它像'var airports:[[String:String]] = [[“YYZ”:“Toronto Pearson”,“DUB”:“Dublin”]]',那么只需要注意大括号。 –

回答

4

申报dictiona的阵列RY,使用此:

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

我看到在你的字典,你用绳子拌数,所以最好使用AnyObject而不是字符串在字典中的数据类型。 如果此代码后,你不必修改这个数组的内容,申报为“让”,否则,用“无功”

更新:一个循环内初始化:

//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]] 
+0

谢谢,这是有道理的。例如,如果我想:字典:[[String:AnyObject]] = [[“number”:2,“square”:4],[“number:3,”square“: 9]] 下面没有工作 VAR词典:[[字符串:AnyObject]] 对于x 2 ... 3 { 变种新= [ “数量”:X, “方形”:X * x] 以某种方式追加新的字典 } –

+0

查看我的更新回答 –

+0

Thanks..works perfect –

1
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”:2]

[ “b” 的:2 “” :1]

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

for airport in airports { 
    print(airport["YYZ"]) 
}