使用valueForKeyPath
今天要说的是valueForKeyPath方法,而不是数组取值的valueForKey方法哦!大家不要弄错了。
需求一(计算总合):假设一个数组中存放着若干个实体类:A
A中有id,name,grade这三个属性,现在需要计算grade的总合。
代码实现:
NSArray*gradeTotal=[dataSourcevalueForKeyPath:@"@unionOfObjects.grade"];NSNumber*sumGrade=[gradeTotal valueForKeyPath:@"@sum.floatValue"];
实现的原理是,先将数组中实体类中的一个属性提取成一个新数组,然后还是通过valueForKeyPath的函数进行计算。
需求二(剔除重复数据):还是上面那个数组,现在需要剔除重复的名字
代码实现:
NSArray *nameDistinctArray = [gradeTotal valueForKeyPath:@"@distinctUnionOfObjects.name"]);
很强大吧?告别for循环,告别臃肿,告别低效。
其他更详细的功能就不在赘述了,上链接:
http://www.thinksaas.cn/topics/0/347/347021.html