码迷,mamicode.com
首页 > 其他好文 > 详细

谓词NSPredicate

时间:2015-09-21 11:54:32      阅读:138      评论:0      收藏:0      [点我收藏+]

标签:

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

 

 
 

谓词NSPredicate

标签:

原文地址:http://www.cnblogs.com/kyuubee/p/4825464.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!