学习笔记、、、谓词的用法、、、、、、、

来源:互联网 发布:小语种就业前景知乎 编辑:程序博客网 时间:2024/05/09 11:46

//  Person.h

//  NSPredicate

//

//  Created by lceboy on 13-5-20.

//  Copyright (c) 2013 p. All rights reserved.

//


#import <Foundation/Foundation.h>


@interface Person :NSObject


@property(nonatomic,copy)NSString *name;

@property(nonatomic,retain)NSNumber *age;



@end

//  NSPredicate

//

//  Created by lceboy on 13-5-20.

//  Copyright (c) 2013 p. All rights reserved.

//


#import "Person.h"


@implementation Person


-(NSString*)description{

   NSString *s = [NSStringstringWithFormat:@"name=%@,age=%@",_name,_age];

   return  s;//重点理解

}


@end


/***************************谓词的使用方法************************/


#import <Foundation/Foundation.h>

#import "Person.h"

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

{


    @autoreleasepool {

        

        //、、、、、、、、通过循环把创建的对象存入数组array、、、、、、、、、

        NSMutableArray *array = [NSMutableArrayarray];

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

           Person *person = [[Personalloc]init];

           if (i<5) {

                person.name = [NSStringstringWithFormat:@"jack-%d",i];

            }else{

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

            }

            person.age =@(20+i);

            [arrayaddObject:person];

            [personrelease];

        }

        

       //一、、、、、、、、判断是否满足条件、、、、、、、、、、、、、、、、

        //元算符       // NSPredicate *predicate = [NSPredicate predicateWithFormat:@"age<%d",25];

        //NSPredicate *predicate = [NSPredicate predicateWithFormat:@"age<%d&&age>%d",25,21];

        

        //、、、、、、、、、、、、、、in、、、、、、、、、、、、

        

        //NSArray *inArray = @[@"tom-8",@"jack-3",@"jack-23"];

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

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

        

        

        //、、、、、、、、1BEGINSWITH  2ENDSWITH 3CONTAINS  4like 关键字、、、、、、、、、、、、、、、

        

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

        

        //NSPredicate *predicate = [NSPredicate predicateWithFormat:@"name ENDSWITH '8' "];

        

        //NSPredicate *predicate = [NSPredicate predicateWithFormat:@"name CONTAINS 'a' "];

        

        //NSString *string = [NSString stringWithFormat:@"name like '*%@*' ",@"a"];

        //NSPredicate *predicate = [NSPredicate predicateWithFormat:string];

        

         NSPredicate *predicate = [NSPredicatepredicateWithFormat:@"name like '*a*'"];

         for (Person*pin array){

           BOOL flag = [predicate evaluateWithObject:p];

           if (flag) {

               NSLog(@"%@", p);

            }

        }

           //二、、、、、、、、、、、、、、、、、、、对数组过滤、、、、、、、、、、、、、、、、、、、、、

       NSArray *filterArray=[array filteredArrayUsingPredicate:predicate];

       NSLog(@"%@",filterArray);

        

  


        

    }

   return 0;

}

参考结果---------

2013-05-20 21:33:57.805 NSPredicate[427:303] name=jack-0,age=20

2013-05-20 21:33:57.807 NSPredicate[427:303] name=jack-1,age=21

2013-05-20 21:33:57.807 NSPredicate[427:303] name=jack-2,age=22

2013-05-20 21:33:57.808 NSPredicate[427:303] name=jack-3,age=23

2013-05-20 21:33:57.808 NSPredicate[427:303] name=jack-4,age=24

2013-05-20 21:33:57.809 NSPredicate[427:303] (

    "name=jack-0,age=20",

    "name=jack-1,age=21",

    "name=jack-2,age=22",

    "name=jack-3,age=23",

    "name=jack-4,age=24"

)



原创粉丝点击