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

NSPredicate:谓词 字面翻译是这个意思,但是我觉得谓词这个词太难以理解了 NSPredicate的具体用途应该还是过滤,类似于过滤条件之类的,相当于一个主语的谓语,所以说会是谓词...
  • s3590024
  • s3590024
  • 2016年07月13日 13:52
  • 414

iOS SDK详解之NSPredicate(Swift)

原创Blog,转载请注明出处 blog.csdn.net/hello_hwc前言:谓词在集合过滤以及CoreData中有着广泛的应用。本文以Playground上的Swift代码为例,讲解如何使用N...
  • Hello_Hwc
  • Hello_Hwc
  • 2015年05月16日 11:44
  • 5095

iOS---NSPredicate谓词的用法 数组过滤

转载自:http://blog.csdn.net/lmf208/article/details/38345321 NSPredicate是什么 NSPredicate:谓词...
  • iotjin
  • iotjin
  • 2015年12月05日 16:06
  • 468

OC学习篇之---谓词(NSPredicate)

在前一篇文章中我们介绍了OC中一个重要技术通知:http://blog.csdn.net/jiangwei0910410003/article/details/41923401,今天我们在来看一下OC...
  • jiangwei0910410003
  • jiangwei0910410003
  • 2014年12月14日 10:39
  • 29812

NSPredicate 谓词总结 数组过滤 模糊匹配

NSPredicate 用于指定过滤条件,主要用于从集合中分拣出符合条件的对象,也可以用于字符串的正则匹配。 NSPredicate常用方法介绍 1.创建NSPredicate(相当于创建一个过滤条件...
  • daiyelang
  • daiyelang
  • 2014年01月20日 09:47
  • 10615

iOS中的谓词(NSPredicate)使用

首先,我们需要知道何谓谓词,让我们看看官方的解释: The NSPredicate class is used to define logical conditions used to co...
  • sky_yang1024
  • sky_yang1024
  • 2016年02月25日 11:09
  • 636

109.NSPredicate-谓词使用总结

用于指定过滤器的条件,可以进行条件匹配和模糊搜索。可以对集合中的简单对象进行筛选, 也可以通过数据模型的属性对模型数据中数据过滤出匹配数据....
  • wangyanchang21
  • wangyanchang21
  • 2016年09月18日 19:00
  • 708

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

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

iOS 查询数组中的对象 谓词NSPredicate

1.NSString 对象    NSArray  *array =@["123", @"234" , @"345"];  NSPredicate *predicate = [NSPredicate ...
  • wjwc2014
  • wjwc2014
  • 2016年08月05日 14:21
  • 240

NSPredicate谓词搜索使用小记

iOS中谓词搜索使用小记
  • xgb742951920
  • xgb742951920
  • 2015年06月11日 12:04
  • 855
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:NSPredicate谓词
举报原因:
原因补充:

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