前言
這篇文章主要介紹KVC中的Collection Operators
厂榛,以及自定義Collection Operators
的思路,雖然官方文檔中明確的指出目前不支持自定義
正文
Collection Operators
有3種丽惭,分別是:Simple Collection Operators
击奶,Object Operators
,Array and Set Operators
责掏。且操作對(duì)象均為數(shù)組或集合
Simple Collection Operators
@avg
:求均值
@count
:求總數(shù)
@max
:求最大值
@min
:求最小值
@sum
:求和
如果操作對(duì)象(集合/數(shù)組)內(nèi)是NSNumber
柜砾,可以這樣寫
Object Operators
@unionOfObjects
:返回操作對(duì)象內(nèi)部的所有對(duì)象,返回值為數(shù)組
@distinctUnionOfObjects
:返回操作對(duì)象內(nèi)部的不同對(duì)象换衬,返回值為數(shù)組
Array and Set Operators
@unionOfArrays
:返回操作對(duì)象(且操作對(duì)象內(nèi)對(duì)象必須是數(shù)組/集合)中數(shù)組/集合的所有對(duì)象痰驱,返回值為數(shù)組
@distinctUnionOfArrays
:返回操作對(duì)象(且操作對(duì)象內(nèi)對(duì)象必須是數(shù)組/集合)中數(shù)組/集合的不同對(duì)象,返回值為數(shù)組
@distinctUnionOfSets
:返回操作對(duì)象(且操作對(duì)象內(nèi)對(duì)象必須是數(shù)組/集合)中數(shù)組/集合的所有對(duì)象瞳浦,返回值為集合
提示:集合無(wú)重復(fù)元素
介紹了這么多担映,Collection Operators
的強(qiáng)大已經(jīng)不言而喻了吧,如果可以自定義該有多好(夢(mèng)想還是要有的术幔,萬(wàn)一實(shí)現(xiàn)了呢另萤?)
以NSArray
為例,runtime跑一下
可以看到一堆的方法,接著搜索關(guān)鍵字avg
四敞,count
泛源,max
等上述Collection Operators
經(jīng)過(guò)篩選得到如下結(jié)果
_avgForKeyPath:
_countForKeyPath:
_maxForKeyPath:
_minForKeyPath:
_sumForKeyPath:
_unionOfObjectsForKeyPath:
_distinctUnionOfObjectsForKeyPath:
_unionOfArraysForKeyPath:
_distinctUnionOfArraysForKeyPath:
_distinctUnionOfArraysForKeyPath:
猜想:實(shí)現(xiàn)_<key>ForKeyPath:
即可自定義Collection Operators
嘗試定義一個(gè)名為@jack
的Collection Operators
可見,只要寫好實(shí)現(xiàn)忿危,完全可以自定義一些比較有用的Collection Operators