KVC该机制

KVC该机制
KVCcocoa的大招,用来间接获取或者改动对象属性的方式。
一、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错误。

版权声明:本文博客原创文章,博客,未经同意,不得转载。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值