
cocoa中提供了NSPRedicate类,指定过滤器的条件,将符合条件的对象保留下来.谓词筛选后的结果也是一个数组.
CoreData查找数据也是通过谓词.
谓词设置方法
//设置条件
NSPredicate *predicate=[NSPredicate predicateWithFormat:@"age<5"];
//与
NSPredicate *predicate1=[NSPredicate predicateWithFormat:@"age<9&&age>5"];
//或
NSPredicate *predicate2=[NSPredicate predicateWithFormat:@"age<3||age>5"];
//占位符传参
NSPredicate *predicate3=[NSPredicate predicateWithFormat:@"age=%d",3];
//多条件
NSArray *arrayname=@[@"jack1",@"Tom7" ];
NSPredicate *predicate4=[NSPredicate predicateWithFormat:@"name in %@",arrayname];
//是否以某个字符开头,可以使用和与或
NSPredicate *predicate5=[NSPredicate predicateWithFormat:@"name beginswith 'j'"];
//是否以某个字符结尾,可以使用和与或
NSPredicate *predicate6=[NSPredicate predicateWithFormat:@"name endswith '9'"];
//contains 是否包含某个字符
NSPredicate *predicate7=[NSPredicate predicateWithFormat:@"name contains 'a'"];
//like 类似SQL中的模糊查找
NSPredicate *predicate8=[NSPredicate predicateWithFormat:@"name like '*a*'"];
搜索结果获得方法
//方法一:
for (person *p1 in array) {
//返回布尔值,根据布尔值可以判断符合要求的数据
BOOL result=[predicate evaluateWithObject:p1];
if (result) {
NSLog(@"%@",p1);
}
}
//方法二
//filterUsingPredicate,将过滤后的方法放入原方法中,数组是可变数组
[array filterUsingPredicate:predicate];
for (person *p1 in array) {
NSLog(@"%@",p1);
}
//方法三
//filteredArrayUsingPredicate,将过滤后的结果放入一个新的数组中
NSArray *array1=[array filteredArrayUsingPredicate:predicate8];
for (person *p1 in array1) {
NSLog(@"%@",p1);
}