ldj*_*ldj 5 recursion objective-c nsdictionary
嗨我有一个json字符串转换为未将JSON框架转换为字典,我需要提取其内容.我怎么能迭代到嵌套的词典?我已经有了这段代码,可以让我看到字典:
NSDictionary *results = [responseString JSONValue];
NSMutableArray *catArray = [NSMutableArray array];
for (id key in results) {
NSLog(@"key: %@, value: %@", key, [results objectForKey:key]);
[catArray addObject:key];
NSString *cat = key;
}
Run Code Online (Sandbox Code Playgroud)
有人可以提供一个示例,说明如何使用密钥的名称来获取所有级别的dic?
dic的结果结构如下:http://www.freeimagehosting.net/uploads/e7c020d697.png
alt text http://www.freeimagehosting.net/uploads/e7c020d697.png
谢谢
LDJ
你可能要尝试递归函数.
-(void)recurse:(NSDictionary *)dict counter: (int*) i parent:(NSString *) parent{
for (NSString* key in [dict allKeys]) {
id value = [dict objectForKey:key];
NSLog(@"%@ -> %@", parent, key);
if ([value isKindOfClass:[NSDictionary class]]) {
i++;
NSDictionary* newDict = (NSDictionary*)value;
[self recurse:newDict counter:i parent:key];
i--;
} else {
//Do smthg
}
}
}
Run Code Online (Sandbox Code Playgroud)
这将列出所有键及其级别.
尝试
for ((id) key in [results allKeys]) {
NSLog(@"key: %@, value: %@", key, [results objectForKey:key]);
[catArray addObject:key];
NSString *cat = key;
}
Run Code Online (Sandbox Code Playgroud)
希望有所帮助.
编辑:我不确定我是否理解你的结构是正确的,但我觉得你在你的词典中有一些价值,这又是dictionairies.如果你想通过位于另一个内部的dictionairy进行交互,你可以这样做:
for ((id) key in [results allKeys]) {
id value = [results objectForKey:key];
if ([value isKindOfClass:[NSDictionary class]]) {
NSDictionary* newDict = (NSDictionary*)value;
for ((id) subKey in [newDict allKeys]) {
...
}
}
}
Run Code Online (Sandbox Code Playgroud)
如果你知道你想要的字典的特定键,你可以检查它,而不是检查值是否是字典.但也许在两种情况下检查都不是一个坏主意......
| 归档时间: |
|
| 查看次数: |
8992 次 |
| 最近记录: |