简单说一下:
KVC集合运算符, 返回strings, number或dates
@count: 返回一个值为集合中对象总数的NSNumber对象
@sum: 首先把集合中的每个对象都转换成double类型, 然后计算其总数, 最后返回一个值为这个总和的NSNumber对象
@avg: 把集合中的每个对象都转换成double类型, 然后计算其总数, 最后返回一个值为这个集合中所有对象总和的平均值的NSNumber对象
@max: 使用compare: 方法来确定最大值. 所以为了让其正常工作, 集合中所有的对象都必须支持和另一个对象的比较
@min: 和@max一样, 但是返回的是集合中的最小值
代码如下:
一个product类
<span style="font-size:14px;">@interface Product : NSObject
@property NSString *name;
@property double price;
@property NSDate *launchedOn;
@end
</span>
name: iphone 5 price: $199 Launch Date: September 21, 2012
ipad Mini $329 November 2, 2012
Mac Book Pro $1699 June 11, 2012
iMac $1299 November 2, 2012
那么使用KVC键值路径的运算符操作, 可以得到数组个数, 价格总格, 均价和最早发布日期
<span style="font-size:14px;">[products valueForKeyPath:@"@count"]; // 4
[products valueForKeyPath:@"@sum.price"]; // 3526.00
[products valueForKeyPath:@"@avg.price"]; // 881.50
[products valueForKeyPath:@"@max.price"]; // 1699.00
[products valueForKeyPath:@"@min.launchedOn"]; // June 11, 2012
</span>
可以这样理解, 以其中一个为例. @sum.price, price是product的一个属性. @sum的@符号意味着后面将进行运算, @sum通知KVC机制进行总和计算.