美文网首页
iOS中的谓词(NSPredicate)使用

iOS中的谓词(NSPredicate)使用

作者: sky_wyl | 来源:发表于2016-10-14 09:44 被阅读0次

    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)使用

          本文链接:https://www.haomeiwen.com/subject/zobiyttx.html