欢迎来到风尚网
风尚网首页 > 首页 > 阅读 > KVC进阶(三)

KVC进阶(三)

作者:01_Jack 2016-02-20 09:12 来源:简书 编辑:美朵

文章摘要
前言这篇文章主要介绍KVC中的CollectionOperators,以及自定义CollectionOperators的思路,虽然官方文档中明确的指出目前不支持自定义note正文CollectionOperators有3种,分别是:S...

前言

这篇文章主要介绍KVC中的Collection Operators,以及自定义Collection Operators的思路,虽然官方文档中明确的指出目前不支持自定义

note

正文

Collection Operators有3种,分别是:Simple Collection OperatorsObject OperatorsArray 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

可以看到一堆的方法,接着搜索关键字avgcountmax等上述Collection Operators经过筛选得到如下结果

_avgForKeyPath:
_countForKeyPath:
_maxForKeyPath:
_minForKeyPath:
_sumForKeyPath:
_unionOfObjectsForKeyPath:
_distinctUnionOfObjectsForKeyPath:
_unionOfArraysForKeyPath:
_distinctUnionOfArraysForKeyPath:
_distinctUnionOfArraysForKeyPath:

猜想:实现_<key>ForKeyPath:即可自定义Collection Operators

尝试定义一个名为@jackCollection Operators

尝试

运行结果

可见,只要写好实现,完全可以自定义一些比较有用的Collection Operators

小主,按键盘右方向键 → 翻页可以跳过片头呢

  

上一篇:KVO进阶(一)

  

下一篇:KVC进阶(二)

  

本文标题:KVC进阶(三)

原文链接:http://i.she.vc/28182.html

和本文相似的内容:

点击排行