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'"];
像这个条件查询,好像还有很多种用法,比如比较某个字段的大小和范围之类的,后续待进。
可用的过滤条件语法,请参考