你的位置:首页 > 操作系统

[操作系统]谓词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);    }