用于定义逻辑条件约束,是对一个获取内存过滤搜索的逻辑条件(意思:是一个过滤,不符合条件的都滚开)
基本语法
比较运算符 (=、==、=>、<=、!= … 谓词中=和==是相同的意思都是判断,而没有赋值这一说)
NSPredicate *predicate = [NSPredicate predicateWithFormat:@“SELF = 123”];
[predicate evaluateWithObject:testNum]; 返回YES或NO
BETWEEN:表达式必须满足{下限,上限},大于或等于下限,并小于或等于上限
SELF BETWEEN {100,200}
逻辑运算符 (AND、&&、OR、||、NOT、!)
SELF > 2 && SELF < 8
字符串比较运算符([c]忽略大小写[d]忽略重音符号[cd]忽略大小写和重音符号)
BEGINSWITH:检查字符串是否以指定的字符串开头
SELF BEGINSWITH “a”
SELF BEGINSWITH[cd] “café”
ENDSWITH:检查字符串是否以指定的字符串结尾
CONTAINS:检查字符串是否包含指定的字符串
LIKE:检查字符串是否匹配指定字符串模板
SELF LIKE ‘ab’ (包含)
SELF LIKE ‘?ab’ (第2、3个字符为ab)
MATCHES:检查字串串是否匹配指定的正则表达式(正则表达式的执行效率最低,但功能强大,最为常用)
集合运算符
ANY、SOME:任意一个元素满足条件,就返回YES
ALL:所有元素都满足条件,返回YES
NONE:没有任何元素满足条件返回YES
IN:等价SQL中的IN运算符,当左边表达式或值出现在右边,返回YES
数组过滤掉另外一个数组的所有数据
NSPredicate *predicate = [NSPredicate predicateWithFormat:@“NOT(SELF IN %@)”,array];
[source filteredArrayUsingPredicate:predicate];