数组和谓词


#import <Foundation/Foundation.h>

#import "Person.h"

int main(int argc, const char * argv[]) {

    @autoreleasepool {


        NSMutableArray * array = [NSMutableArray array];

        for (int i = 0; i < 10; i++) {

            Person * person = [[Person alloc]init];

            if (i<5) {

                person.name = [NSString stringWithFormat:@"lcq%d", i];

            }else{

                 person.name = [NSString stringWithFormat:@"wxc%d", i];

            }

            person.age = @(20 + i);

            [array addObject:person];

        }

    

    

        

        /** 1. 固定值筛选*/

        

        NSPredicate * pradicate1 = [NSPredicate predicateWithFormat:@"age<25"];

        for (Person *p in array) {

           BOOL ret = [pradicate1 evaluateWithObject:p];

            if (ret) {

                NSLog(@"%@",p);

            }

        }

        /* 打印结果

         2016-01-13 14:50:31.485 谓词练习[4050:201773] name --lcq0,  age---20

         2016-01-13 14:50:31.487 谓词练习[4050:201773] name --lcq1,  age---21

         2016-01-13 14:50:31.487 谓词练习[4050:201773] name --lcq2,  age---22

         2016-01-13 14:50:31.487 谓词练习[4050:201773] name --lcq3,  age---23

         2016-01-13 14:50:31.487 谓词练习[4050:201773] name --lcq4,  age---24

         */

        

        /** 2.对数组过滤 */

        NSPredicate * pradicate2 = [NSPredicate predicateWithFormat:@"age<25"];

       NSArray * temp = [array filteredArrayUsingPredicate:pradicate2];

        NSLog(@"%@", temp);

        /*

         可变数组的 filterUsingPredicate 是空的返回值 会直把满足条件的对象 加入到可变数组中

         */

        

        /* 打印结果

         2016-01-13 14:50:31.487 谓词练习[4050:201773] (

         "name --lcq0,  age---20",

         "name --lcq1,  age---21",

         "name --lcq2,  age---22",

         "name --lcq3,  age---23",

         "name --lcq4,  age---24"

         )

         */

        

        /** 3.使用占位符过滤 */

        NSPredicate * pradicate3 = [NSPredicate predicateWithFormat:@"age < %d", 22];

        for (Person *p in array) {

            BOOL ret = [pradicate3 evaluateWithObject:p];

            if (ret) {

                NSLog(@"%@",p);

            }

        }

        /* 打印结果

         2016-01-13 14:51:50.980 谓词练习[4064:202565] name --lcq0,  age---20

         2016-01-13 14:51:50.980 谓词练习[4064:202565] name --lcq1,  age---21

         */


        /** 4.使用运算符过滤 例如 && AND || OR */

        NSPredicate * pradicate4 = [NSPredicate predicateWithFormat:@"age > %d && age < %d", 22, 24];

        for (Person *p in array) {

            BOOL ret = [pradicate4 evaluateWithObject:p];

            if (ret) {

                NSLog(@"%@",p);

            }

        }

        /* 打印结果

        2016-01-13 14:54:11.564 谓词练习[4087:203511] name --lcq3,  age---23

         */

        

        /** 5.判断是否在某个范围内 */

        NSPredicate * pradicate5 = [NSPredicate predicateWithFormat:@"name IN {'lcq3', 'wxc6'}"];

        /*可以用数组的方式写 

         NSArray * inArr = @[@"lcq3", @"wxc6"];

         NSPredicate * predicate = [NSPredicate predicateWithFormat:@"name IN %@", inArr];

         */

        for (Person *p in array) {

            BOOL ret = [pradicate5 evaluateWithObject:p];

            if (ret) {

                NSLog(@"%@",p);

            }

        }

        /* 打印结果

         2016-01-13 15:00:57.366 谓词练习[4117:206353] name --lcq3,  age---23

         2016-01-13 15:00:57.366 谓词练习[4117:206353] name --wxc6,  age---26

         */

        /** 6.判断是否以某个字符串开头 */

        NSPredicate * pradicate6 = [NSPredicate predicateWithFormat:@"name BEGINSWITH 'lcq' "];

        /*还有以某个字符串结尾

         NSPredicate * pradicate6 = [NSPredicate predicateWithFormat:@"name ENDSWITH 'lcq' "];

         

         还有包含某个字符串

         NSPredicate * pradicate6 = [NSPredicate predicateWithFormat:@"name CONTAINS 'l' "];

         

         还有可以模糊查询

         NSPredicate * pradicate6 = [NSPredicate predicateWithFormat:@"name LIKE '*c*0' "];

         

         条件的模糊查询方式

         NSString * Pre = [NSString stringWithFormat:@"name like '*%@*'",@"c"];

         NSPredicate * pradicate6 = [NSPredicate predicateWithFormat:Pre];

        */


        for (Person *p in array) {

            BOOL ret = [pradicate6 evaluateWithObject:p];

            if (ret) {

                NSLog(@"%@",p);

            }

        }

        /* 打印结果

         2016-01-13 15:12:57.786 谓词练习[4166:213385] name --lcq0,  age---20

         2016-01-13 15:12:57.786 谓词练习[4166:213385] name --lcq1,  age---21

         2016-01-13 15:12:57.786 谓词练习[4166:213385] name --lcq2,  age---22

         2016-01-13 15:12:57.786 谓词练习[4166:213385] name --lcq3,  age---23

         2016-01-13 15:12:57.786 谓词练习[4166:213385] name --lcq4,  age---24

         */



        

    }

    return 0;

}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值