Predicate 谓词/断言

本文介绍了NSPredicate在Foundation框架中的应用,它用于创建过滤条件并筛选集合中的对象。通过类似数据库查询的方式,结合比较和逻辑运算符,可以对Person对象的属性如pid, name, age进行筛选。示例代码展示了如何创建谓词、使用evaluateWithObject方法以及如何使用filteredArrayUsingPredicate进行数组过滤。" 130394874,7988386,基于Java的小区物业管理与智慧社区系统,"['Java开发', '物业管理软件', '社区管理系统', '智慧社区', 'B/S架构']

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

NSPredicate
在Foundation框架中,提供了一个NSPredicate类,可以指定过滤条件,通过指定的过滤条件可以对集合中的对象进行筛选过滤;
NSPredicate的查询方式类似于数据库的查询,可以使用比较和逻辑运算符,还可以使用一些关键字;

1 创建
+ (NSPredicate )predicateWithFormat:(NSString )predicateFormat;
2 使用
-(BOOL)evaluateWithObject:(id)object;

@property(nonatomic)int pid;
@property(nonatomic,copy)NSString name;
@property(nonatomic)int age;

Person *p1 = [[Person alloc]init];
p1.pid = 1;
p1.name = @”Tom”;
p1.age = 18;
Person *p2= [[Person alloc]init];
p1.pid = 2;
p1.name = @”James”;
p1.age = 20;
Person *p3 = [[Person alloc]init];
p1.pid = 3;
p1.name = @”Nick”;
p1.age = 25;

NSPredicate *pre = [NSPredicate predicateWithFormat:@”age = %d”, 20];
NSArray *array = @[p1,p2,p3];
for(Person *per in array) {
BOOL r = [pre evaluateWithObject:p2];
NSLog(@”%@”, r == 1?@”YES”:@”NO”);
}

  1. 数组过滤器
    -(NSArray )filteredArrayUsingPredicate:(NSPredicate );
    array = [array filteredArrayUsingPredicate:pre]

(覆盖下description)
-(NSString *)description {
return [NSString stringWithFormat:@”%d,%@,%d”,self.pid,self.name,self.age];
}
4. 格式说明符
%d %@; @k(key)
NSPredicate *pre = [NSPredicate predicateWithFormat:@”%k==%d && %k=%@”, @”age”,20,@”name”,@”tom”];

运算符:between self
字符串运算符:BEGINWITH/ENDWITH/CONTAINS/LIKE

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值