在我的特定情况下,我有NSDictionary
个对象,可以包含NSString
个对象作为键,NSString
和NSDictionary
个对象作为值。内部词典也可以包含NSDictionary
个对象。
如果我需要迭代所有内部NSString
个对象并在其上附加一个字母,该怎么办?注意:我需要更改值和键
答案 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,然后在字典中创建一个新条目?