在 2d 词典中使用循环添加数据 swift 2.2

标签: Swift2 ios Swift
发布时间: 2017/3/6 23:39:46
注意事项: 本文中文内容可能为机器翻译,如要查看英文原文请点击上面连接.

我宣布一个 2d 字典像下面︰

var dic:NSDictionary = [Int:[String:String]]()

现在,我想在 2d 的词典使用一个循环中插入数据。我被困在这样做

字典视图示例是

dic[0]
      - key value
      - key value
dic[1]
      - key vlaue
      - key value 
dic[2]
      - key value
      - key value

解决方法 1:

Vacawama 在他的回答中提到,是没有理由不坚持到本机 Swift 类型︰ 使用 Dictionary 而不是 NSDictionary 。这个答案提出使用嵌套词典的一个替代方法。

可选的链接和字典方法updateValue(_:forKey:)

您可以使用 DictionaryupdateValue(_:forKey:) 方法来设置或更新某个特定键的值。我不确定你的意思的"中环",但低于如下示例使用 updateValue(_:forKey:) 构建外字典,以及内在的字典 (在这里,虚拟词典)

var dict = [Int:[String:String]]()

for outerKey in (0...3) {
    // reset/create a new inner dictionary
    dict.updateValue([:], forKey: outerKey)

    // update/add new key-value pair of inner dict
    for dummyKeyValuePairs in (1...2) {
        dict[outerKey]?.updateValue("Value\(dummyKeyValuePairs)",
                                    forKey: "Key\(dummyKeyValuePairs)")
    }
}

print(dict)
/* [2: ["Key1": "Value1", "Key2": "Value2"], 
    0: ["Key1": "Value1", "Key2": "Value2"], 
    1: ["Key1": "Value1", "Key2": "Value2"], 
    3: ["Key1": "Value1", "Key2": "Value2"]] */

如果你想要添加 (或编辑) 另一个键-值对到你内在的字典,只是之一使使用的 updateValue(_:forKey:) 只是如上︰

dict[2]?.updateValue("NewValue", forKey: "NewKey")
   /*   \
       note that this optional chaining here means our
       updating/adding of inner dictionary key-value pairs
       is entirely performed as a side effect, where we
       never make use of the actual result of the expression */

print(dict)
/* [2: ["Key1": "Value1", "Key2": "Value2", "NewKey": "NewValue"],
    0: ["Key1": "Value1", "Key2": "Value2"],
    1: ["Key1": "Value1", "Key2": "Value2"],
    3: ["Key1": "Value1", "Key2": "Value2"]] */

关于如何打印键/值对的字典,你问题,例如可以应用一个嵌套 for ... in 的方法︰

for (outerKey, innerDict) in dict {
    print("Key-value pairs for outer dict key \(outerKey) follows:")
    for (key, value) in innerDict {
        print("\tkey: \(key), value: \(value)")
    }
}
/*  Key-value pairs for outer dict key 2 follows:
        key: Key2, value: Value2
        key: Key1, value: Value1
    Key-value pairs for outer dict key 0 follows:
        key: Key2, value: Value2
        key: Key1, value: Value1
    Key-value pairs for outer dict key 1 follows:
        key: Key2, value: Value2
        key: Key1, value: Value1
    Key-value pairs for outer dict key 3 follows:
        key: Key2, value: Value2
        key: Key1, value: Value1                  */

请注意字典无序集合,因此无序的输出打印以上时。

官方微信
官方QQ群
31647020