Iphone 在第二级词典上枚举
假设我有一个NSDictionary和一个嵌套的NSDictionary,如下所示(简化后,我有大约10个嵌套字典): 调用Iphone 在第二级词典上枚举,iphone,ios,nested,nsdictionary,enumeration,Iphone,Ios,Nested,Nsdictionary,Enumeration,假设我有一个NSDictionary和一个嵌套的NSDictionary,如下所示(简化后,我有大约10个嵌套字典): 调用[dictionary allKeys]只会给我“key1”和“key2”。有没有什么简单的方法可以像这样循环嵌套字典中的所有键?即使是嵌套函数?递归函数 - (void) findAllKey:(NSDictionary*)dic { for ( NSString *key in [dic allKeys] ) { NSLog(@"%@",
[dictionary allKeys]
只会给我“key1”和“key2”。有没有什么简单的方法可以像这样循环嵌套字典中的所有键?即使是嵌套函数?递归函数
- (void) findAllKey:(NSDictionary*)dic
{
for ( NSString *key in [dic allKeys] )
{
NSLog(@"%@",key);
if ( [[dic objectForKey:key] isKindOfClass:[NSDictionary class]] )
{
[self findAllKey:[dic objectForKey:key]];
}
}
}
它的深度优先搜索希望避免递归,但它似乎是必要的。无论如何,我可能会使用一个稍微修改过的版本(也在调用内部工作,而不是仅仅查找键),但这完美地回答了这个问题。可以使用广度优先搜索来避免递归,这很容易做到
- (void) findAllKey:(NSDictionary*)dic
{
for ( NSString *key in [dic allKeys] )
{
NSLog(@"%@",key);
if ( [[dic objectForKey:key] isKindOfClass:[NSDictionary class]] )
{
[self findAllKey:[dic objectForKey:key]];
}
}
}