OC-NSPredicate多条件查询

转载自m.blog.csdn.net/qq_29892943/article/details/52765344

直接的多条件查询

- (void)searchBar:(UISearchBar )searchBar textDidChange:(NSString )searchText;

{

NSString *searchString = [searchBar text];

//NSString *searchString = searchText;

if (self.searchList!= nil) {

[self.searchList removeAllObjects];

}

//NSPredicate 多个条件查询

NSPredicate * predicate = [NSPredicate predicateWithFormat:@"SELF.name CONTAINS[c] %@ || SELF.u_id CONTAINS[c] %@",searchString,searchString];

self.searchList= [NSMutableArray arrayWithArray:[_dataArray filteredArrayUsingPredicate:predicate]];

//刷新表格

[self.tableView reloadData];

}

下面写一些多条件的常用查询条件:

//年龄小于30

//定义谓词对象,谓词对象中包含了过滤条件

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"age<%d",30];

//使用谓词条件过滤数组中的元素,过滤之后返回查询的结果

NSArray *array = [persons filteredArrayUsingPredicate:predicate];

NSLog(@"filterArray=%@",array);

//查询name=1的并且age大于40

predicate = [NSPredicate predicateWithFormat:@"name='1' && age>40"];

array = [persons filteredArrayUsingPredicate:predicate];

NSLog(@"filterArray=%@",array);

//in(包含)

predicate = [NSPredicate predicateWithFormat:@"self.name IN {'1','2','4'} || self.age IN{30,40}"];

//name以a开头的

predicate = [NSPredicate predicateWithFormat:@"name BEGINSWITH 'a'"];

//name以ba结尾的

predicate = [NSPredicate predicateWithFormat:@"name ENDSWITH 'ba'"];

//name中包含字符a的

predicate = [NSPredicate predicateWithFormat:@"name CONTAINS 'a'"];

//like 匹配任意多个字符

//name中只要有s字符就满足条件

predicate = [NSPredicate predicateWithFormat:@"name like '*s*'"];

//?代表一个字符,下面的查询条件是:name中第二个字符是s的

predicate = [NSPredicate predicateWithFormat:@"name like '?s'"];

你可能感兴趣的:(OC-NSPredicate多条件查询)