从NSArray过滤NSDictionary

时间:2015-09-03 06:50:28

标签: nsarray nsdictionary nspredicate nspredicateeditor

我有一个NSArray包含带有键{“name”,“age”,“weight”}的NSDictionary对象 其中键名为NSString,age为NSInteger,weight为float Value

我需要使用以下条件过滤NSArray  1.name包含'abc'  2.低于18岁  3.重量小于50

答案将得到赞赏

1 个答案:

答案 0 :(得分:0)

这会起作用,但根本不优雅。

NSMutableArray *filteredArray = [[NSMutableArray alloc]init];
for (NSDictionary *dic in myArray){

int age = [[dic objectForKey:@"age"]intValue];

     if (age < 18){

        float weight = [[dic objectForKey:@"weight"]floatValue];
        if (float < 50){

        string name = [dic objectForKey:@"name"];
        if (![string rangeOfString:@"bla"].location == NSNotFound) {
            [filteredArray addObject:dic];
         }

        }
     }

}

另一个优雅的解决方案是使用枚举块和谓词来检查你的字典内容,但是我在Objective-C中做得不够舒服。