1.KVC定义
KVC
全称是
Key Value Coding
,定义在
NSKeyValueCoding.h
文件中,是一个
非正式协议
。
KVC
提供了一种间接访问其属性方法或成员变量的机制,可以通过字符串来访问对应的属性方法或成员变量。
在
NSKeyValueCoding
中提供了
KVC
通用的访问方法,分别是
getter
方法
valueForKey:
和
setter
方法
setValue:forKey:
,以及其衍生的
keyPath
方法,这两个方法各个类通用的。并且由
KVC
提供默认的实现,我们也可以自己重写对应的方法来改变实现。
2.KVC基本操作
(1)使用
KVC
时,直接将属性名当做
key
,并设置
value
,即可对属性进行赋值。
[myAccount setValue:@(20.0) forKey:@"age"];
(2)keyPath 用法
除了对当前对象的属性进行赋值外,还可以对其更“深层”的对象进行赋值。
例如对当前对象的
address
属性的
street
属性进行赋值。
KVC
进行多级访问时,直接类似于属性调用一样用点语法进行访问即可。
[myAccount setValue:@"十里河" forKeyPath:@"address.street"];
3.KVC的赋值原理