【发布时间】:2013-07-04 04:23:01
【问题描述】:
我有一个包含人员列表的 NSMutableArray,现在我需要获取所有性别 = 男性的人的列表,我该怎么做?我应该进入 NSPredicates 来做到这一点吗?
【问题讨论】:
我有一个包含人员列表的 NSMutableArray,现在我需要获取所有性别 = 男性的人的列表,我该怎么做?我应该进入 NSPredicates 来做到这一点吗?
【问题讨论】:
将此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 的优势在于您不必使用文字字符串来指定条件(如果条件很复杂,那就很混乱了)。
【讨论】:
是的,你可以这样使用,
NSArray *filtered = [data filteredArrayUsingPredicate:[NSPredicate predicateWithFormat:@"self.gender == %@", @"male"]];
NSLog(@"%@",filtered);
【讨论】: