NSPredicate初识

NSPredicate 用于执行搜素或内存中的过滤操作。

predicateWithFormat:方法在创建NSPredicate对象调用,填写一个谓词字符串作为参数

eg:

NSPredicate *pred = [NSPredicate predicateWithFormat:@"name like 's*'"];

predicateWithSubstitutionVariables:用于NSPredicate声明后,设置参数值,参数为字典型数据

eg:

NSPredicate *pred = [NSPredicate predicateWithFormat:@"name contains $substr"];
NSPredicate *pred1 = [pred predicateWithSubstitutionVariables:[NSDictionary dictionaryWithObjectsAndKeys:@ "sun", @"substr", nil]];

evaluateWithObject:方法返回BOOL类型值,用来判断是否搜到结果

eg:

NSPredicate *pred = [NSPredicate predicateWithFormat:@"name like 's*'"];
User *user1 = [[User alloc] initWithName:@"sun" pass:@"123"];
BOOL result1 = [pred evaluateWithObject:user1];

使用谓词过滤集合元素的方法

- (NSArray *)filteredArrayUsingPredicate:(NSPredicate *)predicate;//使用指定的谓词过滤NSArray集合,返回该集合中符合谓词条件的元素组成新集合
- (void)filterUsingPredicate:(NSPredicate *)predicate;//使用指定的谓词过滤NSMutableArray集合,剔除该集合中不符合条件的元素
- (NSSet *)filteredSetUsingPredicate:(NSPredicate *)predicate;//使用指定的谓词过滤NSSet集合,返回该集合中符合谓词条件的元素组成新集合
- (void)filterUsingPredicate:(NSPredicate *)predicate;//使用指定的谓词过滤NSMutableSet集合,剔除该集合中不符合条件的元素
eg:
NSMutableArray *array = [NSMutableArray arrayWithObjects:[NSNumber numberWithInt:50],
                             [NSNumber numberWithInt:42],
                             [NSNumber numberWithInt:20],
                             [NSNumber numberWithInt:64],
                             [NSNumber numberWithInt:56],
                             nil];
//创建谓词,要求该对象自身的值大于50
NSPredicate *pred = [NSPredicate predicateWithFormat:@"self > 50"];
//使用谓词执行过滤,过滤后只剩下值大于50的集合元素
[array filteredArrayUsingPredicate:pred];
NSLog(@"值大于50的元素:%@", array);
在谓词表达式中支持%K(用于动态传入属性名)、%@两种占位符

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值