2017-04-18 53 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"]