iOS NSPredicate(谓词)

        Cocoa 提供了NSPredicate 用于指定过滤条件,定义一个逻辑条件,通过该条件可执行搜索或过滤操作。
       谓词是指在计算机中表示计算真假值的函数,它使用起来有点儿像SQL 的查询条件,主要用于从集合中分拣出
符合条件的对象,也可以用于字符串的正则匹配。
创建步骤:
  1.创建谓词,并放置过滤条件
   NSPredicate *predicate = [NSPredicate predicateWithFormat:@"age<%d",30];
 2.对数组进行谓词判断,并返回数组
   NSArray *array = [persons filteredArrayUsingPredicate:predicate];
过滤条件描述如下:
(1)数值判断
        ===:判断是否等于某个值     
        >==>:判断是否大于等于某个值
        <==<:判断是否小于等于某个值
        >:判断是否大于某个值
        <:判断是否⼩于某个值 
  (2)其他判断条件
        AND&&:逻辑与,要求两个表达式的值都为YES时,结果才YES
        OR||:逻辑或,要求任何一个表达式的值为YES时,结果才YES
        NOT!:逻辑非,用于对原有表达式的结果取反
        BEGINSWITH:检查某个字符串是否以指定的子串开头
        ENDSWITH:检查某个字符串是否以指定的字串结尾
        CONTAINS:检查某个字符串是否包含指定的⼦串
        LIKE:相当于模糊查询某个字符串,LIKE后⾯面可使⽤用字符串模板,该字符串模板允许使⽤用*?两个通配符,其中*代表任意多个字符,?代表⼀个字符 
          IN{}:检测某个字符串是否是括号内元素
判断条件实例:
BEGINSWITH、ENDSWITH分别表示是否以某字符串开头、结尾:
NSPredicate *predicate = [NSPredicate predicateWithFormat:@”pid BETWEEN {1,5}”];
NSPredicate *predicate = [NSPredicate predicateWithFormat:@”name BEGINSWITH ‘He’”];
NSPredicate *predicate = [NSPredicate predicateWithFormat:@”name ENDSWITH ‘He’”];
IN, CONTAINS 分别代表是否是括号内的元素,是否包含某字符串
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"name CONTAINS 'a'"];
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"name IN {'Name1','Name2'}"];
 LIKE :相当于模糊查询某个字符串,*代表任意多个字符,?代表⼀一个字符 
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"name like '*s*'"];
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"name like '?s'"];

判断使用:
NSArray提供了如下⽅方法使⽤用谓词来过滤数组:
- (NSArray*)filteredArrayUsingPredicate:(NSPredicate *)predicate:使⽤用指定的谓词过滤NSArray数组,返回该数组中符合谓词条件的元素组成新的数组
NSSet提供了如下⽅方法使⽤用谓词来过滤集合:
-(NSSet*)filteredSetUsingPredicate:(NSPredicate *)predicate:使⽤用指定的谓词过滤NSSet集合,返回该集合中符合谓词条件的元素组成新的集合 

NSMutableArray提供了如下⽅方法使⽤用谓词来过滤数组:

-(void)filterUsingPredicate:(NSPredicate *)predicate:使⽤用指定的谓词过滤NSMutableArray数组,删除该数组中不符合条件的元素 NSMutableSet提供了如下⽅方法使⽤用谓词来过滤集合:

-(void)filterUsingPredicate:(NSPredicate *)predicate:使⽤用指定的谓词过滤NSMutableSet集合,删除该集合中不符合条件的元素 



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值