谓语:
就是英语中的am,is,are,用来做判断用的
NSPredicate类中的方法:
+ (NSPredicate*)predicateWithBlock:(BOOL (^)(id evaluatedObject, NSDictionary *bindings))block;
+ (NSPredicate *)predicateWithFormat:(NSString *)predicateFormat, ...;
- (BOOL)evaluateWithObject:(id)object;
NSArray (NSPredicateSupport)分类中的方法:
- (NSArray *)filteredArrayUsingPredicate:(NSPredicate *)predicate;
NSMutableArray (NSPredicateSupport)分类中的方法:
- (void)filterUsingPredicate:(NSPredicate *)predicate;
NSSet (NSPredicateSupport)分类中的方法:
- (NSSet *)filteredSetUsingPredicate:(NSPredicate *)predicate;
NSMutableSet (NSPredicateSupport)分类中的方法:
- (void)filterUsingPredicate:(NSPredicate *)predicate;
谓词中的键路径:
1谓词中一般使用对象的键路径,作为判断的依据,并且使用%K作为键路径的占位符.
2谓词中的键路径的功能与用法,与KVC中的键路径的功能与用法,基本一致.
谓词中的逻辑指令:
&&,||,!,
<,<=,==,>,>=,
BETWEEN { , }
谓词中的字符串指令:
格式字符串(支持)
正则表达式(支持)
BEGANWITH:以指定字符开始
ENDSWITH:以指定字符结束
CONTAINS:包含指定字符,可使用修饰符
[c] 不区分大小写
[d] 不区分注音符号
LIKE:使用通配符匹配
? 一个字符
* 0个或多个字符
举例一:
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SELF CONTAINS[cd] 'aa' "];
int ret = [predicate evaluateWithObject:@"AA"];
举例二:
NSArray persons = @[person1,person2,person3];
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"name CONTAINS 'm' && %K BETWEEN{%d,%d}",@"age",20,30];
NSArray *ret = [persons filteredArrayUsingPredicate:predicate];