KVC进阶(三)

作者: 01_Jack | 来源:发表于2015-09-11 10:18 被阅读1422次

前言

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

相关文章

  • KVC进阶(三)

    前言 这篇文章主要介绍KVC中的Collection Operators,以及自定义Collection Oper...

  • KVC进阶知识

    KVC是如何通过key来存取属性的?这里是有一套规则的: valueForKey:的查找规则 查找是否存在比较直接...

  • KVC进阶(一)

    前言 KVC(Key Value Coding)技术可以不直接访问对象属性的getter和setter而获取属性值...

  • KVC进阶(二)

    前言 上篇文章大致阐述了KVC在key正确情况下的执行过程,这篇来说说key错误时KVC是如何运行的。 正文 如果...

  • OC语法:KVC的底层实现

    一、KVC是什么二、怎么使用KVC三、KVC的底层实现四、KVC常见面试题 一、KVC是什么 KVC全称Key-V...

  • iOS进阶-10 KVC

    在日常发开中,我们可以通过断点调试、源码查看、LLDB调试来探索技术的原理,其实文档查看也是一种极其重要的手段。K...

  • iOS KVC进阶用法

    1. KVC字典操作 2. KVC消息传递 array 3. 聚合操作符 @avg、@count、@max、@...

  • KVC与KVO的进阶使用

    概述 本篇主要介绍键-值编码KVC,键值观察KVO的进阶使用的一些技巧主要是一下两个方面: KVC的集合操作符 K...

  • KVO和KVC的使用及原理解析

    一 KVO基本使用 二 KVO本质原理讲解及代码验证 三 KVC基本使用 四 KVC设值原理 五 KVC取值原理 ...

  • KVC(1) - 进阶用法1

    首先创建一个Person类,在.h文件中定义属性 在ViewController中作如下测试 KVC字典操作 自定...

网友评论

  • 奔跑的三大爷:首先博主感谢分享~
    然后请教下 最后一个自定义 operator我自己也实现了下一个排序的operator 没有问题 我疑惑的是这样写一个operator和直接实现类别方法然后让NSArray的对象直接去调用的优势在哪里呢?
  • 9e2a4cfc9d34:感谢分享
  • c57dddf3b833:浅显易懂,感谢
  • lvvl:这方法太棒了
  • lxyz22zp:为毛是new
  • 小晓旭:好久都不更新一次,熊孩子你敢不敢天天都更新 :grin:

本文标题:KVC进阶(三)

本文链接:https://www.haomeiwen.com/subject/uwypcttx.html