objective-c - 如何使用objectForKey和objectAtIndex高效访问Obj-C中的大对象?

标签 objective-c ios

如果我有一个大的 NSDirectory 通常来自解析的 JSON 对象,我可以使用如下代码访问该对象:

[[[[[obj objectForKey:@"root"] objectForKey:@"key1"] objectAtIndex:idx] objectForKey:@"key2"] objectAtIndex:idz];

队伍可能比这个长很多。

我可以以任何方式优化这段代码吗?至少让它更容易阅读?

如果对象不对应,此行也会生成运行时错误,避免这种情况的最有效方法是什么?

最佳答案

如果您使用-objectForKey:提供您可以使用的一切 -valueForKeyPath: ,如

[obj valueForKeyPath:@"key1.key2.key3.key4"]

但是,当您需要使用-objectAtIndex:时,这不起作用。 。我认为没有什么好的解决方案适合你。 -valueForKeyPath:也无法解决运行时错误的问题。

如果您确实想要一种简单的方法来执行此操作,您可以编写自己的 -valueForKeyPath: 版本(称之为其他名称)提供了指定 -objectAtIndex: 的语法。而不是 key ,并且执行适当的动态检查以确保对象实际响应相关方法。

关于objective-c - 如何使用objectForKey和objectAtIndex高效访问Obj-C中的大对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11324922/

相关文章:

ios - 添加具有比例宽度的 subview 到 ScrollView

objective-c - UIActivityIndi​​cator 没有动画

ios - 打开应用程序时底部工具栏不见了?

iOS 将 ScrollView 添加到现有 View

ios - Xcode - Swift - 如何使用 WebView Controller 通过 Google Image 查找图像 URL

ios - 将数据传递到详细信息 View 、实际数据或引用 ID

objective-c - 对 '__objc_class_name_Fraction' 的 undefined reference

ios - UIImageView - 如何获取分配的图像的文件名?

objective-c - 延迟后的iOS设置属性

ios - 如何检查为什么 NSXMLParser initWithContentsOfURL 方法耗时太长?