代码实现
NSArray *nestedArray = @[
@[
@{@"name":@"Apple", @"otherKey":@"value1"},
@{@"name":@"Banana", @"otherKey":@"value2"}
],
@[
@{@"name":@"Avocado", @"otherKey":@"value3"},
@{@"name":@"Cherry", @"otherKey":@"value4"}
]
];
NSMutableArray *resultArray = [NSMutableArray array];
for (NSArray *subArray in nestedArray) {
for (NSDictionary *dict in subArray) {
NSString *name = dict[@"name"];
if ([name hasPrefix:@"A"]) {
[resultArray addObject:dict];
}
}
}
NSArray *finalResult = [NSArray arrayWithArray:resultArray];
return finalResult;
可能遇到的问题及解决方案
- 空指针问题:如果嵌套的
NSArray
或内部的NSDictionary
中存在nil
值,在快速枚举时访问nil
对象会导致程序崩溃。
if (subArray && [subArray isKindOfClass:[NSArray class]]) {
for (NSDictionary *dict in subArray) {
if (dict && [dict isKindOfClass:[NSDictionary class]]) {
NSString *name = dict[@"name"];
if (name && [name hasPrefix:@"A"]) {
[resultArray addObject:dict];
}
}
}
}
- 数据类型不匹配问题:如果
nestedArray
中的元素不是预期的NSArray
类型,或者内部数组中的元素不是预期的NSDictionary
类型,会导致程序逻辑错误。
- 解决方案:在使用前进行类型检查,如上述代码中通过
isKindOfClass:
方法检查类型,确保操作的对象是预期类型。
- 性能问题:对于非常大的嵌套数据结构,多层嵌套的快速枚举可能会导致性能下降。
- 解决方案:可以考虑使用更高效的数据结构或者算法,例如如果数据结构允许,可以将数据扁平化处理,减少嵌套层数,从而减少循环次数,提高性能。同时,如果数据量过大,可以考虑分页加载等策略。