NSPredicate谓词

原创 2016年05月31日 21:54:38

使用步骤:
➢ 定义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

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

NSPredicate --(谓词查询) Foundation提供的类,它指定数据被获取或者过滤的方式

NSPredicate是一个Foundation类,它指定数据被获取或者过滤的方式。它的查询语言就像SQL的WHERE和正则表达式的交叉一样,提供了具有表现力的,自然语言界面来定义一个集合被搜寻的逻辑...

使用谓词(NSPredicate)来提高集合遍历与过滤查找的效率

在开发中,我们经常会遇到一些需要,让我们从集合中查找某个值,从集合中过滤想要的内容等等,因而我们就需要 遍历 集合,加条件判断,然后获取符合条件的值。而关于 集合的遍历 是所有软件开发从业人员经常打交...
  • hxpp777
  • hxpp777
  • 2016年09月11日 12:29
  • 253

谓词 NSPredicate 使用 筛选约束 过滤条件

谓词 NSPredicate 使用 筛选约束 过滤条件 过滤集合 BEGINWITH ENDSWITH CONTAINS MATCHES BETWEEN...
  • yiral
  • yiral
  • 2016年10月31日 10:57
  • 339

关于谓词NSPredicate的使用

关于NSPredicate的使用,网上已经有很多文章,有一些很不错,z

109.NSPredicate-谓词使用总结

用于指定过滤器的条件,可以进行条件匹配和模糊搜索。可以对集合中的简单对象进行筛选, 也可以通过数据模型的属性对模型数据中数据过滤出匹配数据....

iOS NSPredicate(谓词)

Cocoa 提供了NSPredicate 用于指定过滤条件,定义一个逻辑条件,通过该条件可执行搜索或过滤操作。        谓词是指在计算机中表示计算真假值的函数,它使用起来有点儿像SQL 的查询...

IOS谓词--NSPredicate

IOS谓词--NSPredicate

Objective-C中谓词(NSPredicate)的应用

让我们来了解一下OC中的一种谓词,即NSPredicate,其中NSPredicate定义了一个逻辑查询条件,可以用来过滤数组中的元素,创建NSPredicate对象可以通过+predicateWit...

简单了解一下--谓词(NSPredicate)

我对于谓词(NSPredicate)的简单理解就是:使用谓词(NSPredicate)可以对数组的每一个元素进行操作。...

谓词查询NSPredicate

NSPredicate 查询
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:NSPredicate谓词
举报原因:
原因补充:

(最多只允许输入30个字)