NSArray,如何根据属性的值获取项目

时间:2013-07-04 04:23:01

标签: ios nsarray

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

2 个答案:

答案 0 :(得分: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的优点是您不必使用文字字符串来指定标准(如果标准很复杂,则非常混乱)。

答案 1 :(得分:0)

是的,你可以这样使用,

NSArray *filtered = [data filteredArrayUsingPredicate:[NSPredicate predicateWithFormat:@"self.gender == %@", @"male"]];
NSLog(@"%@",filtered);