使用NSPredicate对NSArray进行过滤
过滤数组是经常要做的事情,最原始的方法是使用for循环进行过滤,每循环一次然后进行if判断。这样效率会很低,而且代码会很臃肿。iOS原生NSPredicate类给我们已经封装好了过滤数组的方法,大家一起来看一下代码吧。(如果你已经知道了,请无视~)
需求:假设一个数组中存放着若干个实体类:A
A中有id,name,age这三个属性,现在需要拿到age为18的数据。
代码实现:
NSPredicate*pred = [NSPredicatepredicateWithFormat:@"SELF.age = %@",@"18"];
NSArray *array_18 = [arrayfilteredArrayUsingPredicate:pred];
array_18就是age为18的数据了。
如果是要知道age>18的数据,则改成:
[NSPredicatepredicateWithFormat:@"SELF.age.intValue > 18"];
是不是很简单?就两句话搞定。
其实这只是NSPredicate的一个很小的功能,他的强大超乎想象,就像Oracle中的SQL查询语句一样强大。
其他的功能就不再多赘述了,别人已经总结好啦,上链接:http://blog.csdn.net/ztp800201/article/details/8116081