一、根据模型条件过滤数组
NSMutableArray *mArr = [[NSMutableArray alloc] init];
TestModel *t1 = [[TestModel alloc] init];
t1.age = @"1"; TestModel *t2 = [[TestModel alloc] init]; t2.age = @"3";
TestModel *t3 = [[TestModel alloc] init];
t3.age = @"19"; [mArr addObject:t1]; [mArr addObject:t2]; [mArr addObject:t3]; // NSPredicate *predicate = [NSPredicate predicateWithFormat:@"age = '19' || age = '3'"];
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"age like '19' || age like '3'"]; NSArray *receiveArr = [mArr filteredArrayUsingPredicate:predicate]; NSLog(@"%@",receiveArr);
模型属性为BOOL 或者 NSNumber
NSMutableArray *mArr = [[NSMutableArray alloc] init];
Person *p = [[Person alloc] init];
p.age = @5;
p.isFemail = YES;
Person *p2 = [[Person alloc] init];
p2.age = @16;
p2.isFemail = NO;
Person *p3 = [[Person alloc] init];
p3.isFemail = YES;
p3.age = @5;
[mArr addObject:p];
[mArr addObject:p2];
[mArr addObject:p3];
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"age = 5"]; //崩溃 NSPredicate *predicate = [NSPredicate predicateWithFormat:@"age like 5"];
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"isFemail = YES"]; //崩溃 NSPredicate *predicate = [NSPredicate predicateWithFormat:@"isFemail like YES"];
NSArray *array = [mArr filteredArrayUsingPredicate:predicate];
NSLog(@"%@",array);
二、求两个数组的交集
NSArray *array1 = [NSArray arrayWithObjects:@1,@2,@3,@4,@5,@6,nil];
NSArray *array2 = [NSArray arrayWithObjects:@4,@5,nil];
//SELF 指下面的array2
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SELF in %@",array1];
NSArray *resultArr = [array2 filteredArrayUsingPredicate:predicate];
NSLog(@"%@",resultArr);
三、过滤数值及字符串 >,<,==,>=,<=,!=
//过滤数值
NSArray *array = @[@1,@2,@3,@4];
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SELF >= 2"];
array = [array filteredArrayUsingPredicate:predicate];
NSLog(@"%@",array);
//过滤字符串
NSArray *array = @[@"1",@"2",@"3",@"4"];
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SELF >= '2'"];
array = [array filteredArrayUsingPredicate:predicate];
NSLog(@"%@",array);
三、范围运算 IN、BETWEEN
NSArray *array = @[@1,@2,@3,@4];
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SELF BETWEEN {1,5}"]; array = [array filteredArrayUsingPredicate:predicate]; NSLog(@"%@",array);
NSArray *array = @[@"1",@"2",@"3",@"4"];
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SELF BETWEEN {'1','5'}"];
array = [array filteredArrayUsingPredicate:predicate];
NSLog(@"%@",array);
NSArray *array = @[@"1",@"2",@"3",@"4"];
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SELF IN {'1','5','4','8'}"];
array = [array filteredArrayUsingPredicate:predicate];
NSLog(@"%@",array);
四、BEGINSWITH、ENDSWITH、CONTAINS
NSArray *array = @[@"1",@"21",@"31",@"4"];
//包含即可
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"self contains '1'"];
array = [array filteredArrayUsingPredicate:predicate];
NSLog(@"%@",array);
NSArray *array = @[@"1",@"21",@"31",@"4"];
//以1开头
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"self beginswith '1'"];
array = [array filteredArrayUsingPredicate:predicate];
NSLog(@"%@",array);
NSArray *array = @[@"1",@"21",@"31",@"4"];
//以1结尾
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"self endswith '1'"];
array = [array filteredArrayUsingPredicate:predicate];
NSLog(@"%@",array);
五、通配符
NSArray *array = @[@"1",@"21",@"31",@"4"];
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"self like '??1'"];
array = [array filteredArrayUsingPredicate:predicate];
NSLog(@"%@",array);
NSArray *array = @[@"1",@"21",@"31",@"4"];
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"self like '1*'"];
array = [array filteredArrayUsingPredicate:predicate];
NSLog(@"%@",array);