iOS NSPredicate数组筛选

来源:互联网 发布:step文件打开软件 编辑:程序博客网 时间:2024/06/05 02:31

NSPredicate数组筛选

简述:Cocoa框架中的NSPredicate用于查询,原理和用法都类似于SQL中的where,作用相当于数据库的过滤取。

**条件查询一般是运用于按照条件要求将数组中符合条件的数据筛选出来形成一个新的数组,主要的功能大概如下:

代码,例如:

NSMutableArray *preditArray = [NSMutableArray array]; for (int i=0; i<8; i++) {           Bill *billList = [[Bill alloc] init];           billList.address = [NSString stringWithFormat:@"BeijingAve-%d", i];           billList.num = @(2 + i);           [preditArray addObject:billList];        }**and  or  in 查询**//将preditArray数组中num小于25大于20的模型取出组成一个新的数组NSArray *arrayAnd = [preditArray filteredArrayUsingPredicate:[NSPredicate predicateWithFormat:@"num>%d and num<%d" , 20, 25]];//将preditArray数组中num小于22或者大于25的模型取出组成一个新的数组NSArray *arrayOr = [preditArray filteredArrayUsingPredicate:[NSPredicate predicateWithFormat:@"num > 25 || num < 22"]]; //将preditArray数组中address在BeijingAve-0到BeijingAve-5之间的模型取出组成一个新的数组NSArray *arrayIn = [preditArray filteredArrayUsingPredicate:[NSPredicate predicateWithFormat:@"address  in {'BeijingAve-0', 'BeijingAve-5'}"]];**重点内容**CONTAINS  like 查询 NSArray *arrayCONTAINS = [preditArray filteredArrayUsingPredicate:[NSPredicate predicateWithFormat:@"address CONTAINS '5'"]];                NSArray *array9 = [mutableArray filteredArrayUsingPredicate:[NSPredicate predicateWithFormat:@"address like 'BeijingAve*'"]];                            //根据UITextField输入的内容筛选NSArray *arrayTextField = [preditArray filteredArrayUsingPredicate: [NSPredicate predicateWithFormat:@"address contains[c] %@",textField.text]];//单个条件NSPredicate *p1 = [NSPredicate predicateWithFormat:@"address contains[c] %@", searchOneText]; NSPredicate *p2 = [NSPredicate predicateWithFormat:@"num contains[c] %@", searchTwoText];NSPredicate *predicate = [NSCompoundPredicate orPredicateWithSubpredicates:@[p1, p2]];NSArray *arrayTextField = [preditArray filteredArrayUsingPredicate:predicate];//多个 Or条件
1 0
原创粉丝点击