iphone - 达到 NSDictionary 中最深的子级别

标签 iphone objective-c cocoa-touch ios nsdictionary

我有一个 NSDictionary 对象,其中包含深层结构,例如包含包含字典的进一步数组的数组...

我想在层次结构中向下获取一个对象。是否有任何直接索引方法可以使用键名或其他方式获取它们?

多次调用 objectForKey 方法以达到最深的子级别是一件痛苦的事情。

最佳答案

如果您只使用字典,并且字典中的键总是字符串,则可以使用 key-value coding遍历几层字典:

id someObject = [mainDictionary valueForKey:@"apple.pear.orange.bear"];

这相当于:

NSDictionary *level2Dict = [mainDictionary objectForKey:@"apple"];
NSDictionary *level3Dict = [level2Dict objectForKey:@"pear"];
NSDictionary *level4Dict = [level3Dict objectForKey:@"orange"];
id someObject = [level4Dict objectForKey:@"bear"];

不过,如果您还混合使用数组,这就不太方便了。参见 this recent SO discussion有关此主题的更多信息。

关于iphone - 达到 NSDictionary 中最深的子级别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6003396/

相关文章:

iphone - 您可以在 iPhone 中使用 Quartz 制作渐变动画吗?

ios - 登记机关答复无效

iphone - 关于Apple的KMLViewer placemarkDescription and annotation subtitle

ios - 如何在 iOS 中以编程方式在 UITableViewCells 中添加图像

objective-c - 在 CCSprite 数组元素中搜索 Objective C (cocos2d)

ios - 将参数传递给@selector 方法

iphone - 如何更改弹出窗口的外观

iphone - Xcode数据库使用困惑

iphone - 在 KeychainItemWrapper 中存储多个值

ios - 从 NSNumber 获取 CGFloat 的最常见和正确的做法是什么?