谓词 NSPredicate:用于创建指定过滤条件的类
创建谓词: NSPredicate* pre = [NSPredicate predicateWithFormat:" name == '1111' " ] 内部的字符串要用单引号 否则会被认为是键路径
计算谓词: BOOl res = [pre evaluateWithObject:car] //查询car是否满足谓词pre 谓词条件是 对象的 键路径name 的值是否为1111
数组过滤器:
NSArray* arry = [cars filteredArrayUsingPredicate:pre] 循环数组的每个元素将满足谓词条件的对象返回
1.格式化说明符创建谓词:
%K 键路径 %d 数字 %@ 字符串 不要用‘%@’
NSPredicate* pre = [NSPredicate predicateWithFormat:" %K==%@",@"name",@"11111" ]
2.将变量放在字符串中创建谓词:
第一步:创建一个字典 key变量名 value变量值
第二步:创建谓词 NSPredicate* pre = [NSPredicate predicateWithFormat:"name = $name " ]
第三部:设置谓词的’环境变量表‘为第一步创建的字典predicateWithSubtitutionVariables
其实就是将谓词中要使用的一些值用变量表示 将变量的名字和值保存到一个字典中 在将字典保存到谓词中
谓词支持C语言逻辑运算符 oc的运算符不区分大小写
数组运算符:
BETWEEN {50,100}
IN {.....}
当谓词应用于一些简单的值如NSString 无法设置谓词的键路径 可以用SELF
SELF表示响应谓词的对象
有一些运算符是针对字符串的:
BEGINSWITH: 字符串a是否以某个字符串b开始
ENDSWITH: ..........................................结束
CONTAINS:包含
“name BEGINSWITH [cd] ''11111 ” c不区分大小写 d不区分发音符
LIKE:
“name LIKE ‘*er*’ ”
“name LIKE ‘????er’ ”
谓词的效率高于正则表达式