iOS中的谓词(NSPredicate)使用

1.NSNumber *testNumber = @123;

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SELF = 123"];

if ([predicate evaluateWithObject:testNumber]) {

NSLog(@"testString:%@", testNumber);

}

2.NSNumber *testNumber = @123;

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SELF BETWEEN {100, 200}"];

if ([predicate evaluateWithObject:testNumber]) {

NSLog(@"testString:%@", testNumber);

} else {

NSLog(@"不符合条件");

}

3.NSArray *testArray = @[@1, @2, @3, @4, @5, @6];

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SELF > 2 && SELF < 5"];

NSArray *filterArray = [testArray filteredArrayUsingPredicate:predicate];

NSLog(@"filterArray:%@", filterArray);

4.NSArray *filterArray = @[@"ab", @"abc"];

NSArray *array = @[@"a", @"ab", @"abc", @"abcd"];

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"NOT (SELF IN %@)", filterArray];

NSLog(@"%@", [array filteredArrayUsingPredicate:predicate]);

5.ZLPersonModel *sunnyzl = [ZLPersonModel personWithName:@"sunnyzl" age:29 sex:ZLPersonSexMale];

ZLPersonModel *jack = [ZLPersonModel personWithName:@"jack" age:22 sex:ZLPersonSexMale];

//  首先我们来看一些简单的使用

//  1.判断姓名是否是以s开头的

NSPredicate *pred1 = [NSPredicate predicateWithFormat:@"name LIKE 's*'"];

//  输出为:sunnyzl:1, jack:0

NSLog(@"sunnyzl:%d, jack:%d", [pred1 evaluateWithObject:sunnyzl], [pred1 evaluateWithObject:jack]);

//  2.判断年龄是否大于25

NSPredicate *pred2 = [NSPredicate predicateWithFormat:@"age > 25"];

//  输出为:sunnyzl的年龄是否大于25:1, jack的年龄是否大于25:0

NSLog(@"sunnyzl的年龄是否大于25:%d, jack的年龄是否大于25:%d", [pred2 evaluateWithObject:sunnyzl], [pred2 evaluateWithObject:jack]);

6.- (BOOL)checkPhoneNumber:(NSString *)phoneNumber

{

NSString *regex = @"^[1][3-8]\\d{9}$";

NSPredicate *pred = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", regex];

return [pred evaluateWithObject:phoneNumber];

}

7.(有点瑕疵)- (BOOL)checkSpecialCharacter:(NSString *)string

{

NSString *regex = @"[`~!@#$^&*()=|{}':;',\\[\\].<>/?~!@#¥……&*()——|{}【】‘;:”“'。,、?]";

NSPredicate *pred = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", regex];

return [pred evaluateWithObject:string];

}

8.NSMutableArray *arrayM = [@[@20, @40, @50, @30, @60, @70] mutableCopy];

//  过滤大于50的值

NSPredicate *pred1 = [NSPredicate predicateWithFormat:@"SELF > 50"];

[arrayM filterUsingPredicate:pred1];

NSLog(@"arrayM:%@", arrayM);

NSArray *array = @[[ZLPersonModel personWithName:@"Jack" age:20 sex:ZLPersonSexMale],

[ZLPersonModel personWithName:@"Rose" age:22 sex:ZLPersonSexFamale],

[ZLPersonModel personWithName:@"Jackson" age:30 sex:ZLPersonSexMale],

[ZLPersonModel personWithName:@"Johnson" age:35 sex:ZLPersonSexMale]];

//  要求取出包含‘son’的元素

NSPredicate *pred2 = [NSPredicate predicateWithFormat:@"name CONTAINS 'son'"];

NSArray *newArray = [array filteredArrayUsingPredicate:pred2];

NSLog(@"%@", newArray);

9.NSArray *filterArray = @[@"ab", @"abc"];

NSArray *array = @[@"a", @"ab", @"abc", @"abcd"];

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"NOT (SELF IN %@)", filterArray];

NSLog(@"%@", [array filteredArrayUsingPredicate:predicate]);

10.NSArray *array = @[[ZLPersonModel personWithName:@"Jack" age:20 sex:ZLPersonSexMale],

[ZLPersonModel personWithName:@"Rose" age:22 sex:ZLPersonSexFamale],

[ZLPersonModel personWithName:@"Jackson" age:30 sex:ZLPersonSexMale],

[ZLPersonModel personWithName:@"Johnson" age:35 sex:ZLPersonSexMale]];

//  定义一个property来存放属性名,定义一个value来存放值

NSString *property = @"name";

NSString *value = @"Jack";

//  该谓词的作用是如果元素中property属性含有值value时就取出放入新的数组内,这里是name包含Jack

NSPredicate *pred = [NSPredicate predicateWithFormat:@"%K CONTAINS %@", property, value];

NSArray *newArray = [array filteredArrayUsingPredicate:pred];

NSLog(@"newArray:%@", newArray);

//  创建谓词,属性名改为age,要求这个age包含$VALUE字符串

NSPredicate *predTemp = [NSPredicate predicateWithFormat:@"%K > $VALUE", @"age"];

// 指定$SUBSTR的值为 25    这里注释中的$SUBSTR改为$VALUE

NSPredicate *pred1 = [predTemp predicateWithSubstitutionVariables:@{@"VALUE" : @25}];

NSArray *newArray1 = [array filteredArrayUsingPredicate:pred1];

NSLog(@"newArray1:%@", newArray1);

//  修改 $SUBSTR的值为32,  这里注释中的SUBSTR改为$VALUE

NSPredicate *pred2 = [predTemp predicateWithSubstitutionVariables:@{@"VALUE" : @32}];

NSArray *newArray2 = [array filteredArrayUsingPredicate:pred2];

NSLog(@"newArray2:%@", newArray2);

你可能感兴趣的:(iOS中的谓词(NSPredicate)使用)