2015-10-07 29 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"]) 
}