KVC该机制
KVC 是 cocoa 的大招 , 用来间接获取或者改动对象属性的方式。
一、 KVC的作用:
KVC 大招之中的一个: [ self setValuesForKeysWithDictionary:dict]; KVC 的大招之二: 使用 KVC 在获取数值时,假设指定对象不包括 keyPath 的 " 键名 " 。会自己主动进入对象的内部查找 假设取值的对象是一个数组,相同返回一个数组 [ self .carGroups valueForKey: @"title”]; // 会在嵌套的plist文件里依次查找。 kvc机制的注意事项: 1. 依据字典给模型赋值,一个个键值对给模型赋值,太麻烦了。利用KVC将字典中全部内容赋值给模型。须要注意假设模型中的属性和字典中key不匹配的时候,就会报错。报找不到模型中的属性。 2. 模型中的属性能够不所有出如今 plist 文件里
二、KVC的使用
1.KVC能够改变私有变量。
2.KVC支持数学运算。 3. forKeyPath包括了forKey的功能。
4. forKeyPath中能够利用.运算符,一层一层的往下查找对象的属性。
5.假设 forKeyPath查找对象的某一个属性为数组类型,会返回一个新的数组。
6.赋值
[ self setValue :tabBar forKeyPath : @"tabBar" ];
7.取值
[ self valueForKeyPath : @"tabBar ” ];
三、KVC内部的实现原理
KVC的内部实现原理:
利用 KVC 给模型属性赋值的内部实现原理 (setValuesForKeysWithDictionary) :会遍历字典中的全部键值对,然后调用模型对象的 setValue:forKey, 依据字典中的全部 key 。给模型属性赋值。
可是模型中的属性和字典中不匹配的时候。当模型调用
setValue:forKey 。这时候依据 key 没有找到模型中属性的时候,就会报错。 解决方案:
利用执行时机制依据模型中的属性找到字典中的键值对给属性赋值。这样就不会报找不到相应 key 错误。
版权声明:本文博客原创文章,博客,未经同意,不得转载。