我正面临着一个非常普通的场景。
我有一个NSArray,它具有自定义类型的对象,比如Person。Person类具有以下属性: firstName、lastName和age。
如何从具有Person对象的NSArray中获取只包含一个属性的NSArray?
类似于:
NSArray *people;
NSArray *firstNames = [people getArrayOfAttribute:@"firstName" andType:Person.Class]我有一个解决方案,就是编写一个for循环并填充firstNames数组,但我不想这样做。
发布于 2011-05-12 02:25:16
NSArray将使用KVC为您处理此问题
NSArray *people ...;
NSArray *firstName = [people valueForKey:@"firstName"];这将为您提供一个包含数组中每个条目的firstName值的数组
发布于 2011-05-12 02:22:30
查看NSMutableArray中的filterUsingPredicate:方法,基本上是创建一个NSPredicate对象来定义如何过滤数组。
http://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/Predicates/Articles/pUsing.html#//apple_ref/doc/uid/TP40001794-CJBDBHCB
本指南将给你一个概述,并有一个处理数组的部分。
发布于 2011-05-12 05:10:39
您还可以使用基于块的枚举:
NSArray *people; // assumably has a bunch of people
NSMutableArray *firstNames = [NSMutableArray array];
[people enumerateObjectsUsingBlock:
^(id obj, NSUInteger idx, BOOL*flag){
// filter however you want...
[firstNames addObject:[Person firstName]];
}];好处是,如果你有一群人,它是快速和有效的。
https://stackoverflow.com/questions/5968702
复制相似问题