-1

我有 NSMutableArray ,其中包含人员列表,现在我需要获取所有性别 = 男性的人员的列表,我该怎么做?我应该进入 NSPredicates 来做到这一点吗?

4

2 回答 2

2

将此类别复制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在于您不必使用文字字符串来指定标准(如果标准很复杂,那就很混乱了)。

于 2013-07-04T04:37:33.110 回答
0

是的,你可以这样使用,

NSArray *filtered = [data filteredArrayUsingPredicate:[NSPredicate predicateWithFormat:@"self.gender == %@", @"male"]];
NSLog(@"%@",filtered);
于 2013-07-04T04:32:06.150 回答