iOS NSPredicate(谓词)

来源:互联网 发布:覆盖cookie变量php 编辑:程序博客网 时间:2024/06/03 07:09

        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集合,删除该集合中不符合条件的元素 



0 0
原创粉丝点击