2017-04-18 49 views
0

我想創建一個數組像這樣如何使用循環使其中包含像一本字典

array=["1":"1","2":"2","3":"3","4":"4","5":"5","6":"6","7":"7","8":"8"]

這有點像一本字典,每個值必須是一個key:value對的陣列,

所以我的問題是如何啓動這種類型的數組?以下是我的工作,它不起作用。

array=[String:String]() 
for i in 0...7{ 
    array.append(String(i):String(i)) 
} 

每一行都有一個錯誤!

plz幫助

回答

0

它不是像DictionaryDictionary,如果你想使一個字典,你可以去喜歡這種方式。

var dictionary = [String:String]() 
for i in 0...7{ 
    dictionary[String(i)] = String(i) 
} 
print(dictionary) 
["0":"0","1":"1","2":"2","3":"3","4":"4","5":"5","6":"6","7":"7"] 
+0

哈哈,你說得對,謝謝。 –

+0

@ZzwTOM歡迎隊友:),請注意,這將給你的關鍵和值從0到7,如果你想1到8然後範圍應該是'1 ... 8' –

+0

還要注意,因爲這是一本字典,不要期望打印字典的輸出與字典沒有排序後添加的順序相同。 – rmaddy

0

除了Nirav D的答案;我覺得以下可能會有所幫助:

有一種方法updateValue(_:​for​Key:​)更新(或添加新的鍵值對,如果該鍵不存在)給定鍵的值。

所以,你的代碼應該是這樣的:

var array = [String:String]() 
for i in 0...7 { 
    array.updateValue(String(i), forKey: String(i)) 
} 
print(array) 

// Output 
["2": "2", "1": "1", "6": "6", "4": "4", "3": "3", "7": "7", "0": "0", "5": "5"] 

斯威夫特總是驚人的,你可以定義+=運營商,使其更容易。所以代碼如下:

// Defining += operator 
func += <K, V> (inout left: [K:V], right: [K:V]) { 
    for (k, v) in right { 
     left.updateValue(v, forKey: k) 
    } 
} 

// Usage 
var array = [String:String]() 
for i in 0...7{ 
    array += [String(i):String(i)] 
} 
print(array) 

// Output 
["2": "2", "1": "1", "6": "6", "4": "4", "3": "3", "7": "7", "0": "0", "5": "5"]