美文网首页
KVC知识点

KVC知识点

作者: 清水一心 | 来源:发表于2017-05-14 12:08 被阅读0次

KVC称为键值编码(key-value coding),从一个字符串名派生出一个访问器的名称。键(key)是一个字符串,代表要访问的值的名称。键值编码的基础是NSKeyValueCoding协议,它是一个NSObject(以及每个对象)遵守的非正式协议(实际上是一种分类)。

KVC最为重要的四个方法

- (nullable id)valueForKey:(NSString *)key;                          //直接通过Key来取值
- (void)setValue:(nullable id)value forKey:(NSString *)key;          //通过Key来设值
- (nullable id)valueForKeyPath:(NSString *)keyPath;                  //通过KeyPath来取值
- (void)setValue:(nullable id)value forKeyPath:(NSString *)keyPath;  //通过KeyPath来设值

NSKeyValueCoding中的一些方法

+ (BOOL)accessInstanceVariablesDirectly;
  默认返回YES,表示如果没有找到Set<Key>方法的话,会按照_key,_iskey,key,iskey的顺序搜索成员,设置成NO就不这样搜索。
- (BOOL)validateValue:(inout id __nullable * __nonnull)ioValue forKey:(NSString *)inKey error:(out NSError **)outError;
  KVC提供属性值确认的API,它可以用来检查set的值是否正确、为不正确的值做一个替换值或者拒绝设置新值并返回错误原因。
- (NSMutableArray *)mutableArrayValueForKey:(NSString *)key;
  这是集合操作的API,里面还有一系列这样的API,如果属性是一个NSMutableArray,那么可以用这个方法来返回
- (nullable id)valueForUndefinedKey:(NSString *)key;
  如果Key不存在,且没有KVC无法搜索到任何和Key有关的字段或者属性,则会调用这个方法,默认是抛出异常
- (void)setValue:(nullable id)value forUndefinedKey:(NSString *)key;
  和上一个方法一样,只不过是设值。
- (void)setNilValueForKey:(NSString *)key;
  如果你在SetValue方法时面给Value传nil,则会调用这个方法
- (NSDictionary<NSString *, id> *)dictionaryWithValuesForKeys:(NSArray<NSString *> *)keys;
  输入一组key,返回该组key对应的Value,再转成字典返回,用于将Model转到字典。

KVC与运算符

1.@count 返回数组或者集合中元素的个数 
2.@sum 返回数组或者集合中所有元素的总和 
3.@avg 返回数组或者集合中所有元素的平均值 
4.@min 返回数组或者集合中所有元素的最小值 
5.@max 返回数组或者集合中所有元素的最大值

KVC作用

1. 可以绕过实例变量的私有性(当然,可以通过协议中的accessInstanceVariablesDirectly进行设置,来做限制)。
2. 利用KVC可以修改只读变量
3. 对你正发送的消息,你可以摆脱编译-时间检查。此外,键值编码对你操作的对象所属的实际类是不可知的。
4. 修改一些控件的内部属性
5.模型里的属性要和JSON 解析的值(例如:id、description等等系统关键字就可以用这种方法做了)
6. 动态地取值和设值

参考

iOS开发技巧系列---详解KVC(我告诉你KVC的一切)
KVC Collection Operators
KVC/KVO原理详解及编程指南

相关文章

  • KVC知识点

    1、KVC简介 KVC的全称是Key-Value Coding,俗称“键值编码”,可以通过一个key来访问某个属性...

  • KVC知识点

    KVC称为键值编码(key-value coding),从一个字符串名派生出一个访问器的名称。键(key)是一个字...

  • iOS KVC 和KVO 老生常谈系列(一)

    首先,给大家讲一下这两个基础知识点的重点。 一、KVC与KVO 二、KVC的使用方式 三、KVO的使用方式

  • KVC详解

    KVC 目录结构KVC定义KVC取值和设置KVC使用keyPathKVC处理字典KVC作用 参考:iOS KVC和...

  • iOS知识体系总结-KVO&KVC

    注意:更新内容会同步到GitHub iOSWiki-知识体系总结 总结-KVO&KVC iOS知识点/KVO&KV...

  • iOS原理篇(二): KVC实现原理

    KVC实现原理 什么是 KVC KVC基本使用 KVC 原理 总结 一 、 什么是KVC KVC的全称是Key-V...

  • KVC底层的知识点

    valueForKey (总体规则 先找相关方法,再找相关变量) 1.先找相关方法,如果相关方法找不到2.那么去...

  • kvo、kvc知识点总结

    KVC和KVO 一、摘要 *1 KVO,即:Key-Value-Observing,它提供一种机制,当指定的对象的...

  • iOS 关于KVC的一些总结

    本文参考: KVC官方文档 KVC原理剖析 iOS KVC详解 KVC 简介 KVC全称是Key Value Co...

  • KVC,KVO

    KVC , KVO KVC和KVO的区别及应用 KVC/KVO原理 1. KVC键值编码 KVC,即是指NSKey...

网友评论

      本文标题:KVC知识点

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