为了账号安全,请及时绑定邮箱和手机立即绑定

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

标签:
iOS
前言

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

点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
移动开发工程师
手记
粉丝
7
获赞与收藏
67

关注作者,订阅最新文章

阅读免费教程

  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消