NSPredicate的学习
来源:互联网 发布:json数组添加对象 编辑:程序博客网 时间:2024/05/22 23:15
Foundation提供使用谓词(predicate)来过滤NSArray/NSMutableArray&NSSet/NSMutableSet的方法。
不可变的集合,NSArray&NSSet,有可以通过评估接收到的predicate来返回一个不可变集合的方法filteredArrayUsingPredicate:和filteredSetUsingPredicate:。
可变集合,NSMutableArray&NSMutableSet,可以使用方法filterUsingPredicate:,它可以通过运行接收到的谓词来移除评估结果为FALSE的对象。
NSDictionary可以用谓词来过滤它的键和值(两者都为NSArray对象)。NSOrderedSet可以由过滤的NSArray或NSSet生成一个新的有序的集,或者NSMutableSet可以简单的removeObjectsInArray:,来传递通过_否定_predicate过滤的对象。
理解谓词表达式的语法
1:基本的比较运算符
1) =,==: 表示两个表达式是否相等
2) >=,=>: 判断左边表达式的值是否大于或等于右边表达式的值.
3) <=,=<: 判断左边表达式的值是否小于或等于右边表达式的值.
4) >: 判断左边表达式的值是否大于右边表达式的值.
5) <: 判断左边表达式的值是否小于右边表达式的值.
6) !=,<>: 判断两个表达式是否不相等.
7) BETWEEN: BETWEEN表达式必须满足"表达式 BETWEEN{下限,上限}"的格式,要求该表达式的值必须大于或等于下限,并小于或等于上限.
2:基本逻辑运算符
1) AND,&&: 逻辑与,要求两个表达式的值都为YES,结果才是YES.
2) OR,||: 逻辑或,要求任何一个表达式的值为YES,结果才是YES.
3) NOT,!: 逻辑非,对原有的表达式结果取反.
3:字符串比较运算符
1) BEGINSWITCH:检査某个字符串是否以指定字符串的子串开头
2) ENDSWTICH:检査某个字符串是否以指定字符串的子串结尾
3) CONTAINS:检査某个字符串是否包含指定字符串的子串
4) LIKE:检査某个字符串是否匹配指定的字符串模板.LIKE运算符后面可使用字符串模版,该字符串模版允许使用*和?两个通配符,其中*代表任意多个字符,?代表一个字符.比如"name LIKE *er*",这要求 name 的值包含 er子串,则返回 YES;有比如"pass LIKE ??er*",这要求 name 的值必须先有两个任意字符,接下来是 er字符,任何可以是任意子串,则返回 YES.
5) MATCHES:检査某个字符串是否匹配指定的正则表达式,MATCHES后面可以使用正则表达式,虽然正则表达式的概念最强大,但执行效率也是最低的,因此,能够用前面的运算符解决的,就使用前面的.说明一点这些运算符都是区分大小写和重音符号的,例如"name BEGINWITCH 'fkja'",当 name为fkjava是返回 YES, 当name为 FKJAVA时,将会返回 NO,因为字符串区分大小写.
如果希望字符串比较运算符不区分大小写和重音字符号,可在这些运算符后面使用[c],[d],其中[c]指定不区分大小写,[d]指定不区分重音符号.
4:操作集合的运算符
1) ANY,SOME: 指定只要集合任意一个元素满足条件,即可返回 YES.例如, ANY children.age<18,只要children集合中任意一个元素的 age小于18,即可返回 YES.
2) ALL:指定要求集合中所有的元素满足条件返回 YES.ALL children.age<18,只要children集合中所有元素的 age小于18,即可返回 YES.
3) NONE: 指定要求集合没有任何元素满足条件才返回 YES.例如,ALL children.age<18,只要children集合中所有元素的 age 都不小于18,即可返回 YES.
4) IN:该运算符基本等价于 SQL 语句中的 IN 运算符,只有当左边表达式或值出现在右边的集合中才会返回 YES. 例如: name IN {'Ben','Melissa','Nick'},只有当name的值为'Ben','Melissa','Nick'之一才返回 YES.
4) array[index]: 返回array数组中index索引处的元素.
array[FIRST]: 返回array数组中第一个元素.
array[LAST]: 返回array数组中最后一个元素.
array[SIZE]: 返回array数组中元素的个数.
//5:直接量
FALSE,NO :代表逻辑假
TRUE,YES :代表逻辑真
NULL,NIL :代表空值
SELF :代表正在被判断的对象本身.
"text",'text': 代表字符串
下面一起学习一下:
- NSPredicate的学习
- NSPredicate的学习讲解
- iOS NSPredicate的学习讲解
- NSPredicate学习
- Xcode学习笔记---NSPredicate
- [iOS学习]NSPredicate
- IOS NSPredicate学习
- Swift-NSPredicate学习整理
- NSPredicate的用法
- NSPredicate的使用
- NSPredicate的用法
- NSPredicate的用法
- NSPredicate的用法
- NSPredicate的用法
- NSPredicate的用法
- NSPredicate的用法
- NSPredicate的用法
- NSPredicate的用法
- spring事务一
- POJ3714(分治)
- 设计模式 -- 工厂模式(Factory)
- 如何做到比产品经理更懂产品
- Spring整合JMS(三)——MessageConverter介绍
- NSPredicate的学习
- linux时间戳在mac上的使用
- ML2PortSecurityExtensionDriver is working
- Spring整合JMS(四)——事务管理
- CSDN网站系统升级公告
- 一个老程序员的话
- Linux网络编程——TCP通信
- 解决hibernate向mysql插入中文乱码问题
- Xamarin for android 小白教程-HelloWorld !