objective-C学习 谓词NSPredicate 可过滤

#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:@"jack-%d",i];

            }

            else

            {

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

            }

            person.age = @(20+i);

            [array addObject:person];

            [person release];

        }

        

        //判断是否满足条件

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

//        NSPredicate *predicate = [NSPredicate predicateWithFormat:@"age<%d",23];   //格式占位符

            //逻辑运算符 不区分大小写 and && or ||

//        NSPredicate *predicate = [NSPredicate predicateWithFormat:@"age<22 or age>26"];

//        NSPredicate *predicate = [NSPredicate predicateWithFormat:@"age<26 && age>24"];

            //关键字  注意字符串加‘’

//        NSPredicate *predicate = [NSPredicate predicateWithFormat:@"name in {'jack-2','tom-8','sss'}"];    //IN

//        NSArray *inArray = @[@"jack-2",@"tom-8",@"sss"];

//        NSPredicate *predicate = [NSPredicate predicateWithFormat:@"name in %@",inArray];

//        NSPredicate *predicate = [NSPredicate predicateWithFormat:@"name BEGINSWITH 'j'"];  //开头

//        NSPredicate *predicate = [NSPredicate predicateWithFormat:@"name ENDSWITH '5'"];  //结尾

//        NSPredicate *predicate = [NSPredicate predicateWithFormat:@"name CONTAINS 'o'"];    //包含

//        NSPredicate *predicate = [NSPredicate predicateWithFormat:@"name LIKE '*a*'"];  //模糊查询

        NSPredicate *predicate = [NSPredicate predicateWithFormat:@"name LIKE '??m*'"];  //*?通配符

        

        for (Person *p in array) {

            BOOL ret = [predicate evaluateWithObject:p];

            if (ret)

            {

                NSLog(@"%@",p);

            }

        }

       

        //对数组过滤

        NSArray *filterArray = [array filteredArrayUsingPredicate:predicate];

        NSLog(@"%@",filterArray);

        

    }

    

    return 0;

}




#import <Foundation/Foundation.h>


@interface Person : NSObject


@property (nonatomic,copy)NSString *name;

@property (nonatomic,retain)NSNumber *age;


@end




#import "Person.h"


@implementation Person


-(NSString *)description{

    NSString *s = [NSString stringWithFormat:@"Name = %@,Age = %@",_name,_age];

    return s;

}


@end



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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值