Abh*_*nav 7 iphone cocoa-touch objective-c nsdictionary ios
我有一个NSDictionary对象,其中包含深层结构,就像包含更多数组的数组一样,其中包含字典...
我想在层次结构中获取一个对象.是否有任何直接的索引方式来使用键名或其他东西获取它们?
持续多次调用objectForKey方法以达到最深的孩子级别是一种痛苦.
如果您只使用字典,并且字典中的键始终是字符串,则可以使用键值编码遍历多个级别的字典:
id someObject = [mainDictionary valueForKey:@"apple.pear.orange.bear"];
Run Code Online (Sandbox Code Playgroud)
这相当于:
NSDictionary *level2Dict = [mainDictionary objectForKey:@"apple"];
NSDictionary *level3Dict = [level2Dict objectForKey:@"pear"];
NSDictionary *level4Dict = [level3Dict objectForKey:@"orange"];
id someObject = [level4Dict objectForKey:@"bear"];
Run Code Online (Sandbox Code Playgroud)
但是,如果你在混合中也有数组,这不太方便.有关此主题的更多信息,请参阅最近的SO讨论.
对于包含数组的结构,没有内置方法可以执行以下操作:
[dict objectForKey:@"[level1][level2][level3]"]
Run Code Online (Sandbox Code Playgroud)
话虽这么说,任何内置的东西都只是苹果公司某人编写的代码,你也可以这样做。
编写一个帮助程序类,该类将根据您创建的键串联方案为您完成此操作,然后只需调用它即可。它将节省代码重复。
| 归档时间: |
|
| 查看次数: |
3411 次 |
| 最近记录: |