用于过滤集合的条件对象NSPredicate

NSPredicate-指定过滤条件,用来在内存中过滤集合对象

假如有一个集合对象NSMutableArray ,而你想通过输入一个条件而得到满足条件的对象,那么可以使用NSPredicate来进行过滤。

例:

NSMutableArray *mutableArray = [NSMutableArray arrayWithObjects :@"Andy", @"Bike", @"Beer", @"Candy",nil];

1、从这个可变数组中查找其中某个字符串带有“k”的内容:

NSPredicate *sPredicate = [NSPredicate predicateWithFormat:@"SELF contains[c]  'k'"];

NSMutableArray *newMutableArray  =  [mutableArray filterUsingPredicate:sPredicate];

//这个newMutableArray 就是满足条件,字符串对象中包含了k的字符的集合。

注意,在这个里面,这里面是在NSMutableArray中进行过滤,那么返回的就是NSMutableArray,如果是在NSArray中进行过滤,那么返回的就是NSArray对象。

还有"SELF contains[c]  'k'",SELF表示要查询集合中对象,contain[c]表示包含字符串,其中c是不区分大小写的。这个有点像SQL语句或是HQL。


如果在这个可变数组中,存放的不是字符串,而是一个对象,对象包含两个字段,一个name,一个Description,那么要查询name中包含k字符串的,要怎么写呢?

NSPredicate *sPredicate = [NSPredicate predicateWithFormat:@"SELF.name contains[c]  'k'"];

SELF.name表示查询集中中对象的name字段。


2、查询某个字符串对象前面包含B的内容

NSPredicate *sPredicate = [NSPredicate predicateWithFormat:@"SELF beginsWith[c]  'k'"];


像这个条件查询,好像还有很多种用法,比如比较某个字段的大小和范围之类的,后续待进。

可用的过滤条件语法,请参考

https://developer.apple.com/library/mac/documentation/Cocoa/Reference/Foundation/Classes/NSPredicate_Class/Reference/NSPredicate.html#//apple_ref/doc/uid/TP40003714

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值