oc谓词过滤元素

谓词的一个常用功能就是对集合进行过滤,当程序使用谓词对集合进行过滤时,程序将会自动遍历集合元素,并根据集合元素来计算谓词的值,只有当根据某个集合元素计算谓词并返回YES时,该集合元素才会被保留下来。
NSArray 提供了如下方法使用谓词来过滤集合:
- (NSArray *)filteredArrayUsingPredicate:(NSPredicate *)predicate:使用指定的谓词过滤NSArray集合,返回该集合中符合谓词条件的元素组成新集合。
NSMutableArray提供了以下方法使用谓词来过滤集合:
- (void) filterUsingPredicate:(NSPredicate *)predicate:使用指定的谓词过滤NSMutableArray 集合,剔除该集合中不符合条件的元素。
NSSet:
-(NSSet *)filteredSetUsingPredicate:(NSPredicate *)predicate:使用指定的谓词过滤NSSet集合,返回该集合中符合谓词条件的元素组成新集合。
- (void) filterUsingPredicate:(NSPredicate *)predicate:使用指定的谓词过滤NSMutableSet集合,剔除该集合中不符合条件的元素。
#import <Foundation/Foundation.h>

int main(int argc, const char * argv[]) {
    @autoreleasepool {
        NSMutableArray *array = [NSMutableArray arrayWithObjects: [NSNumber numberWithInt: 50], [NSNumber numberWithInt:50], [NSNumber numberWithInt:42], [NSNumber numberWithInt: 20], nil];
        //创建谓词,要求该对象的值大于50
        NSPredicate *pred1 = [NSPredicate predicateWithFormat: @"SELF > 50"];
        //使用谓词执行过滤后,要求只剩下值大于50的集合元素
        [array filterUsingPredicate: pred1];
        NSLog(@"值大于50的元素: %@", array);
        NSSet *set = [NSSet setWithObjects:[[FKUser alloc] initWithName: @"孙悟空“ pass: @"343"], [[FKUser alloc] initWithName: @"金角大王" pass: @"123"], nil];
        //创建谓词,要求该对象的name值中包含”大王“
         NSPredicate *pred2 = [NSPredicate predicateWithFormat: @"name CONTAINS '大王'"];
        //执行过滤,需要一个新集合
      NSSet *newSet = [set filteredSetUsingPredicate: pred2];
    NSLog(@"%@",newSet);
                                            
    }
    return 0;
}

猜你喜欢

转载自blog.csdn.net/qiangshuting/article/details/80791239