-
使用NSPredicate的predicateWithFormat:方法(可以跟不定参数)以一个谓词字符串来创建NSPredicate对象
- NSPredicate* pred =[NSPredicate predicateWithFormat:@“name like ’s*’”];
是否有占位符参数:
没有: 使用evaluateWithObject:计算谓词结果,返回Bool值 [pred evaluateWithObject:obj ];
-
只有普通的%@或%K: 需要在predicateWithFormat:方法中为各占位符传参
- NSString* propertyPath = @“name”; NSString* value = @“Jack”;
- [NSPredicate predicateWithFormat:@“%K CONTAINS %@”, propertyPath,value];
-
有形如$SUBSTR的参数: 使用evaluateWithObject: substitutionVariables: 方法为占位符参数设置参数值并计算谓词结果(或者分为两步,使用predicateWithSubstitutionVariables:为占位符参数设置参数值,然后使用evaluateWithObject:计算谓词的返回结果)
- NSPredicate* pred =[NSPredicate predicateWithFormat:@“name CONTAINS $SUBSTR”];
- NSPredicate* predSub1 = [pred predicateWithSubstitutionVariables:{@“SUBSTR”:@“david" }];//产生一个新的NSPredicate对象
如果要在谓词中使用变量,可以使用占位符参数, 同时需要在predicateWithFormat:方法中为各占位符传参
- %K用于动态传入属性名
- %@用于动态设置属性值
如果是$SUBSTR的参数,需要再predicateWithSubstitutionVariables:接收一个字典为占位符参数设置参数值
谓词表达式语法:
参考FKiOSP305