【问题标题】:NSArray, how get items based on a property's value [duplicate]NSArray,如何根据属性的值获取项目[重复]
【发布时间】:2013-07-04 04:23:01
【问题描述】:

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

【问题讨论】:

    标签: ios nsarray


    【解决方案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);
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-10-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-03
        • 1970-01-01
        • 2011-07-27
        相关资源
        最近更新 更多