NSArray,如何根据属性的值获取项目[重复]
Posted
技术标签:
【中文标题】NSArray,如何根据属性的值获取项目[重复]【英文标题】:NSArray, how get items based on a property's value [duplicate] 【发布时间】:2013-07-04 04:23:01 【问题描述】:我有一个包含人员列表的 NSMutableArray,现在我需要获取所有性别 = 男性的人的列表,我该怎么做?我应该进入 NSPredicates 来做到这一点吗?
【问题讨论】:
【参考方案1】:将此NSArray
类别复制到代码中的某个位置
@implementation NSArray (My)
-(NSArray*)arrayWithPredicate:(BOOL(^)(id obj))predicate
NSMutableArray* objs = [NSMutableArray array];
[self enumerateObjectsUsingBlock:^(id o, NSUInteger idx, BOOL *stop)
if (predicate(o))
[objs addObject:o];
];
return objs;
@end
那么你需要在哪里得到男性:
NSArray* males = [people arrayWithPredicate:^BOOL(id obj)
// Gender check
];
相对于NSPredicate
的优势在于您不必使用文字字符串来指定条件(如果条件很复杂,那就很混乱了)。
【讨论】:
【参考方案2】:是的,你可以这样使用,
NSArray *filtered = [data filteredArrayUsingPredicate:[NSPredicate predicateWithFormat:@"self.gender == %@", @"male"]];
NSLog(@"%@",filtered);
【讨论】:
以上是关于NSArray,如何根据属性的值获取项目[重复]的主要内容,如果未能解决你的问题,请参考以下文章