爱程序网

谓词NSPredicate

来源: 阅读:

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

 

 
 

关于爱程序网 - 联系我们 - 广告服务 - 友情链接 - 网站地图 - 版权声明 - 人才招聘 - 帮助