迭代所有内部NSDictionary项目并改变它们?
问题描述:
在我的具体情况下,我有NSDictionary
对象,它可以包含NSString
对象作为键,NSString
和NSDictionary
对象作为值。内部字典也可以包含NSDictionary
对象。迭代所有内部NSDictionary项目并改变它们?
如果我需要遍历所有内部NSString
对象并向它们附加一个字母怎么办?注:我需要改变这两个值和键
答
在斯威夫特:
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)
}
记住,你可以把函数的功能在里面迅速。这全都是它自己的一个功能。
当然,你也可以使用flatMap,但是最多只有两层。
至于更改密钥,为什么不将前一个键设置为零,然后在字典中创建一个新条目?
+0
你能写出完整的答案吗? –
+0
这是你在找什么? –
请至少指定您是使用Obj-C还是Swift。 – Hamish
@Hamish如果包装在Swift中,'NSDictionary'的行为是否有所不同? – Willeke
'NSDictionary'不可变。 – Willeke