2017-05-26 66 views
-2

在我的具体情况下,我有NSDictionary对象,它可以包含NSString对象作为键,NSStringNSDictionary对象作为值。内部字典也可以包含NSDictionary对象。迭代所有内部NSDictionary项目并改变它们?

如果我需要遍历所有内部NSString对象并向它们附加一个字母怎么办?注:我需要改变这两个值和键

+1

请至少指定您是使用Obj-C还是Swift。 – Hamish

+0

@Hamish如果包装在Swift中,'NSDictionary'的行为是否有所不同? – Willeke

+1

'NSDictionary'不可变。 – Willeke

回答

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) 
} 

记住,你可以把函数的功能在里面迅速。这全都是它自己的一个功能。

当然,你也可以使用flatMap,但是最多只有两层。

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

+0

你能写出完整的答案吗? –

+0

这是你在找什么? –

相关问题