【发布时间】:2012-11-22 04:16:48
【问题描述】:
如果我有一个具有嵌套层次结构的不可变 NSDictionary,从 JSON 字符串,更改深度嵌套在层次结构中的键的值的最简单方法是什么?
例如,我有一个字典,“key1”的值是一个数组,在数组里面,每个元素都是一个字典,每个字典里面都有一个key“key2”的值,现在我想要要更改“key2”的值,因为整个数据结构是不可变的,这很困难,我是否应该使用可变集合复制这个数据结构以便我可以更改该值,这似乎有很多开销,但是这个是我想到的唯一方法。
【问题讨论】:
-
您是否尝试单独键入特定的字典,然后更改 key2 的值?
-
@ACB 然后我需要将其所有超级字典/数组转换为可变的,所以如果我有
["key1":({"key2":"value2"}...)]那么为了将{"key2":"value2"}转换为可变,我还需要对其进行大小写上层字典是可变的 -
我认为没有必要。如果你只是尝试单独做这件事会发生什么?你检查了吗?
-
@ACB 我可以尝试,但是如何将不可变字典转换为可变字典?使用
[NSMutableDictionary initWithDictionary:]?然后它将复制原始字典中的所有键/值,这样即使我更改可变字典中的值,原始字典也不会更改。 -
@ACB 如果是
NSDictionary,你怎么能把它转换成NSMutableDictionary?
标签: objective-c ios nsdictionary immutability