设置嵌套的 NSDictionary 和 NSArray 值

Posted

技术标签:

【中文标题】设置嵌套的 NSDictionary 和 NSArray 值【英文标题】:Setting nested NSDictionary and NSArray values 【发布时间】:2013-03-25 21:07:24 【问题描述】:

我需要能够设置嵌套的 NSDictionary 和 NSArray 的值。例如:

字典 大批 字典 键1 价值1

获取 key1 并设置 value1 的最简单方法是什么? setValueForKeyPath 显然不适用于 and 数组。

【问题讨论】:

让我们考虑一下:dictionary_a array_b dictionary_c key1, value1。我可以想象如何使用正确的键将 array_b 从 dictionary_a 中取出。但是,如何从array_b 中取出dictionary_c 呢?你知道它的索引吗? 【参考方案1】:

使用 Objective-C 的 Object Subscripting。

想象以下嵌套字典和数组:

dictionaryA => arrayB => dictionaryC
arrayB 存储在 @"arrayKey" 下的 dictionaryA 中,并且 dictionaryC 存储在索引dictionary_indexarrayB。 dictionaryC 应设置为value1 for @"key1";

要设置key1,你需要做:

(NSDictionary*)((NSArray*)(dictionaryA[@"arrayKey"])[dictionary_index])[@"key1"] = value1;

有关详细信息,请参阅 Clang 3.3 documentation: OBJECTIVE-C LITERALS 中的对象下标部分。

【讨论】:

注意:这假设您知道在哪个键下存储 arrayB 结束在哪个索引位于 dictionaryC。如果你有一个充满字典的arrayB,这是一种非常方便的方法来遍历它们,使用下标语法array[index] 并设置你想要的键。 这正是我想要的。谢谢!

以上是关于设置嵌套的 NSDictionary 和 NSArray 值的主要内容,如果未能解决你的问题,请参考以下文章

JSON 和嵌套的 NSDictionary

以 NSDictionary 作为对象的嵌套数组上的 NSPredicate

如何在 PLIST 中访问嵌套的 NSDictionary?

获取嵌套 JSON 的 NSArray/NSDictionary

具有深度嵌套层次结构的不可变 NSDictionary:更改键的值?

替换嵌套 NSDictionary 中出现的 NSNull