首页 > 代码库 > KVC的机制
KVC的机制
KVC的机制
KVC是cocoa的大招,用来间接获取或者修改对象属性的方式。
一、KVC的作用:
KVC大招之一:
[selfsetValuesForKeysWithDictionary:dict];
KVC的大招之二:
使用KVC在获取数值时,如果指定对象不包含keyPath的"键名",会自动进入对象的内部查找
如果取值的对象是一个数组,同样返回一个数组
[self.carGroups valueForKey:@"title”];//会在嵌套的plist文件中依次查找。
kvc机制的注意事项:
1. 根据字典给模型赋值,一个个键值对给模型赋值,太麻烦了,利用KVC将字典中所有内容赋值给模型,需要注意如果模型中的属性和字典中key不匹配的时候,就会报错。报找不到模型中的属性。
2.模型中的属性可以不全部出现在plist文件中
[selfsetValuesForKeysWithDictionary:dict];
KVC的大招之二:
使用KVC在获取数值时,如果指定对象不包含keyPath的"键名",会自动进入对象的内部查找
如果取值的对象是一个数组,同样返回一个数组
[self.carGroups valueForKey:@"title”];//会在嵌套的plist文件中依次查找。
kvc机制的注意事项:
1. 根据字典给模型赋值,一个个键值对给模型赋值,太麻烦了,利用KVC将字典中所有内容赋值给模型,需要注意如果模型中的属性和字典中key不匹配的时候,就会报错。报找不到模型中的属性。
2.模型中的属性可以不全部出现在plist文件中
二、KVC的使用
1.KVC可以改变私有变量。
2.KVC支持数学运算。
3.forKeyPath包含了forKey的功能。
3.forKeyPath包含了forKey的功能。
4.forKeyPath中可以利用.运算符,一层一层的往下查找对象的属性。
5.如果forKeyPath查找对象的某一个属性为数组类型,会返回一个新的数组。
6.赋值
[selfsetValue:tabBarforKeyPath:@"tabBar"];
7.取值
[selfvalueForKeyPath:@"tabBar”];
三、KVC内部的实现原理
KVC的内部实现原理:
利用KVC给模型属性赋值的内部实现原理(setValuesForKeysWithDictionary):会遍历字典中的所有键值对,然后调用模型对象的setValue:forKey,根据字典中的所有key,给模型属性赋值。但是模型中的属性和字典中不匹配的时候,当模型调用setValue:forKey,这时候根据key没有找到模型中属性的时候,就会报错。
解决方式:
利用运行时机制根据模型中的属性找到字典中的键值对给属性赋值。这样就不会报找不到对应key的错误了。
KVC的机制
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。