迭代所有内部NSDictionary项并更改它们?

时间:2017-05-26 10:10:36

标签: nsstring iteration nsdictionary mutable

在我的特定情况下,我有NSDictionary个对象,可以包含NSString个对象作为键,NSStringNSDictionary个对象作为值。内部词典也可以包含NSDictionary个对象。

如果我需要迭代所有内部NSString个对象并在其上附加一个字母,该怎么办?注意:我需要更改值和键

1 个答案:

答案 0 :(得分:1)

在斯威夫特:

func adjustNextLayer(inDictionary dictionary: inout [String:Any], for key: String) {
    if let newString = myDictionary[key] as? String {
        myDictionary[key] = "\(newString) insert some text to append here"
    } else {
        If let newDictionary = myDictionary[key] as? [String: Any] {
            newDictionary.keys.foreach { key in
                adjustNextLayer(inDictionary: newDictionary, for: key}
                myDictionary[key] = newDictionary
            }
        }
    }
}

let myDictionary = ["a":1, "b":2]
let keys = myDictionary.keys
keys.foreach { key in
    adjustNextLayer(inDictionary: myDictionary, for: key)
}

请记住,您可以在swift中将函数放在函数内部。这将是它自己的一个功能。

当然,您也可以使用flatMap,但最多可以使用两层。

至于更改密钥,为什么不将前一个密钥设置为nil,然后在字典中创建一个新条目?