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 *[email protected][@"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); }
时间: 2024-11-05 21:55:46