这个问题类似于从 NSArray of objects 中提取属性,但用于更深层次的提取。
为简单起见,我在以下示例中所指的对象是 NSString。
我有两个要解决的案例。
带有对象的 NSDictionary 的 NSArray 的 NSArray
最好使用键值编码,从以下结构中,我想将所有“标题”提取到一个可枚举的列表中:
NSArray *list1 = @[
@[
@{@"title":@"A", @"description":...},
@{@"title":@"B", @"description":...},
],
@[
@{@"title":@"C", @"description":...},
@{@"title":@"D", @"description":...},
],
];
期望的结果将是例如:
@[@"A", @"B", @"C", @"D"]
NSDictionary 的 NSArray 和对象的 NSArray
最好使用键值编码,从以下结构中,我想将“标题”列表提取到单个可枚举列表中:
NSArray *list2 = @[
@{
@"titles":@[
@"A",
@"B",
],
@"descriptions":...,
},
@{
@"titles":@[
@"C",
@"D",
],
@"descriptions":...,
},
];
期望的结果将是例如:
@[@"A", @"B", @"C", @"D"]
笔记
我的真实案例涉及第一个列表
NSOrderedSet
的对象和第二个列表的对象,但这不应该影响我认为的答案。NSOrderedSet
NSOrderedSet
NSDictionary
NSOrderedSet
我写道我更喜欢使用键值编码,但这不是必须的。如果可能的话,我只是想避免写作
for (... in ...)
orenumateObjectWithBlock:
。同样,这无关紧要,但对象是来自获取请求的 NSManagedObject 。所以我知道我可以直接优化获取请求,但我仍然想知道是否有不错的选择。