继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

iOS菜鸟成长季—— KVC进阶(三)

01_Jack
关注TA
已关注
手记 11
粉丝 7
获赞 67
前言

这篇文章主要介绍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

打开App,阅读手记
0人推荐
发表评论
随时随地看视频慕课网APP