关闭

NSPredicate谓词

标签: NSPredicat
75人阅读 评论(0) 收藏 举报
分类:

使用步骤:
➢ 定义NSPredicate对象并指定条件
➢ 调用谓词的evaluateWithObject方法判断指定条件是否满足

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"self CONTAINS '1'"];
NSString *text = @"12345";
NSLog(@"%d", [predicate evaluateWithObject:text]);

1.创建Person的对象数组
2.查询判断姓名和年龄的过滤方法

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"name CONTAINS '1' && %K BETWEEN {%d, %d}", @"age", 5, 15];
NSArray *result = [personList filteredArrayUsingPredicate:predicate];

 谓词的条件指令

1.比较运算符 > 、< 、== 、 >= 、<= 、 !=
例:@"number >= 99"

2.范围运算符:IN 、BETWEEN
例:@"number BETWEEN {1,5}"
      @"address IN {'shanghai','nanjing'}"

3.字符串本身:SELF 
例:@"SELF == 'APPLE'"

4.字符串相关:BEGINSWITH、ENDSWITH、CONTAINS
例:@"name CONTAIN[cd] 'ang'"   //包含某个字符串
      @"name BEGINSWITH[c] 'sh'"     //以某个字符串开头
      @"name ENDSWITH[d] 'ang'"      //以某个字符串结束

5.通配符:LIKE
例:@"name LIKE[cd] '*er*'"    //*代表通配符,Like也接受[cd].
      @"name LIKE[cd] '???er*'"

注: 星号 "*" : 代表0个或多个字符
    问号 "?" : 代表一个字符 

6.正则表达式:MATCHES
例:NSString *regex = @"^A.+e$";   //以A开头,e结尾
      @"name MATCHES %@",regex

注:[c]不区分大小写 , [d]不区分发音符号即没有重音符号 , [cd]既不区分大小写,也不区分发音符号。
7. 合计操作
ANY,SOME:指定下列表达式中的任意元素。比如,ANY children.age < 18。
ALL:指定下列表达式中的所有元素。比如,ALL children.age < 18。
NONE:指定下列表达式中没有的元素。比如,NONE children.age < 18。它在逻辑上等于NOT (ANY ...)。
IN:等于SQL的IN操作,左边的表达必须出现在右边指定的集合中。比如,name IN { 'Ben', 'Melissa', 'Nick' }。

提示:
1. 谓词中的匹配指令关键字通常使用大写字母
2. 谓词中可以使用格式字符串
3. 如果通过对象的key path指定匹配条件,需要使用 %K

0
1

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:41193次
    • 积分:1177
    • 等级:
    • 排名:千里之外
    • 原创:80篇
    • 转载:3篇
    • 译文:0篇
    • 评论:4条
    文章分类