在嵌套的keyPaths结构中获得所有可能的NSDictionary的最佳/最优雅的方法是什么?
该结构不是递归的,因此字典A不包含对自身的引用,无论是直接的还是间接的。
@{ @"root1" : @{ @"level1_a" : @"someValue"
@"level1_b" : @"someOtherValue"}
@"root2" : @{ @"level2_a" : @"someValue"
@"level2_b" : @"someOtherValue"}
}应该给@[@"root1.level1_a", @"root1.level1_b", @"root2.level2_a", @"root2.level2_b"]
发布于 2014-09-02 01:52:57
如果您知道结构不包含循环,则可以使用一个简单的算法递归地执行:
-(NSArray*)getAllKeyPaths:(NSDictionary*)dict {
NSMutableArray *res = [NSMutableArray array];
[dict enumerateKeysAndObjectsUsingBlock:^(id key, id obj, BOOL *stop) {
if ([obj isKindOfClass:[NSDictionary class]]) {
for (NSString *suffix in [self getAllKeyPaths:obj]) {
[res addObject:[NSString stringWithFormat:@"%@.%@", key, suffix]];
}
} else {
[res addObject:key];
}
}];
return res;
}https://stackoverflow.com/questions/25614684
复制相似问题