NSPredicate:谓词,可用于数据查询、筛选。
运算符
用法
创建数组:
Person * p1 = [Person new];
p1.name = @"p1";
p1.age = 1;
Person * p2 = [Person new];
p2.name = @"p2";
p2.age = 2;
Person * p3 = [Person new];
p3.name = @"ps3";
p3.age = 3;
Person * p4 = [Person new];
p4.name = @"sp4";
p4.age = 4;
NSArray * array = @[p1,p2,p3,p4];
筛选小于3的对象
NSPredicate * predicate = [NSPredicate predicateWithFormat:@"age<3"];
NSArray * array1 = [array filteredArrayUsingPredicate:predicate];
筛选范围内的对象
NSPredicate * predicate2 = [NSPredicate predicateWithFormat:@"age in {2,3} || name in {'p1','p2'}"];
NSArray * array2 = [array filteredArrayUsingPredicate:predicate2];
模糊查询 *a* 代表有a的对象
NSPredicate * predicate3 = [NSPredicate predicateWithFormat:@"name like '*a*'"];
NSArray * array3 = [array filteredArrayUsingPredicate:predicate3];
模糊查询 ?a* 第二位是a的对象
NSPredicate * predicate3 = [NSPredicate predicateWithFormat:@"name like '?a*'"];
NSArray * array3 = [array filteredArrayUsingPredicate:predicate3];
key赋值需要用%K(大写), $valueName,代表可以在其他地方重新赋值
NSPredicate * predicate4 = [NSPredicate predicateWithFormat:@"%K > $ageValue",@"age"];
NSPredicate * NewPedicate4 = [predicate4 predicateWithSubstitutionVariables:@{@"ageValue":@(3)}];
NSArray * array4 = [array filteredArrayUsingPredicate:NewPedicate4];
正则匹配手机号
NSPredicate * predicate5 = [NSPredicate predicateWithFormat:@"self matches %@",@"^[1][3-8]\\d{9}$"];
BOOL isMatch = [predicate5 evaluateWithObject:@"18888888888"];