首页 > 学院 > 开发设计 > 正文

谓词NSPredicate

2019-11-14 18:17:39
字体:
来源:转载
供稿:网友

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);        }

 

 
 

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表