这篇文章主要介绍KVC中的Collection Operators,以及自定义Collection Operators的思路,虽然官方文档中明确的指出目前不支持自定义
Collection Operators有3种,分别是:Simple Collection Operators,Object Operators,Array and Set Operators。且操作对象均为数组或集合
JKProduct
Simple Collection Operators
@avg:求均值
@count:求总数
@max:求最大值
@min:求最小值
@sum:求和
Simple Collection Operators
如果操作对象(集合/数组)内是NSNumber,可以这样写
Simple Collection Operators
Object Operators
@unionOfObjects:返回操作对象内部的所有对象,返回值为数组
@distinctUnionOfObjects:返回操作对象内部的不同对象,返回值为数组
Object Operators
Array and Set Operators
@unionOfArrays:返回操作对象(且操作对象内对象必须是数组/集合)中数组/集合的所有对象,返回值为数组
@distinctUnionOfArrays:返回操作对象(且操作对象内对象必须是数组/集合)中数组/集合的不同对象,返回值为数组
@distinctUnionOfSets:返回操作对象(且操作对象内对象必须是数组/集合)中数组/集合的所有对象,返回值为集合
提示:集合无重复元素
Array and Set Operators
运行结果
介绍了这么多,Collection Operators的强大已经不言而喻了吧,如果可以自定义该有多好(梦想还是要有的,万一实现了呢?)
以NSArray为例,runtime跑一下
runttime
可以看到一堆的方法,接着搜索关键字avg,count,max等上述Collection Operators经过筛选得到如下结果
_avgForKeyPath:
_countForKeyPath:
_maxForKeyPath:
_minForKeyPath:
_sumForKeyPath:
_unionOfObjectsForKeyPath:
_distinctUnionOfObjectsForKeyPath:
_unionOfArraysForKeyPath:
_distinctUnionOfArraysForKeyPath:
_distinctUnionOfArraysForKeyPath:
猜想:实现_<key>ForKeyPath:即可自定义Collection Operators
尝试定义一个名为@jack的Collection Operators
尝试
运行结果
可见,只要写好实现,完全可以自定义一些比较有用的Collection Operators
共同学习,写下你的评论
评论加载中...
作者其他优质文章