当前位置: 代码迷 >> 综合 >> iOS开发笔记 kvc的keypath中集合运算符怎么使用?
  详细解决方案

iOS开发笔记 kvc的keypath中集合运算符怎么使用?

热度:36   发布时间:2023-10-17 13:07:55.0

简单说一下: 

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机制进行总和计算. 




  相关解决方案