KVC,即Key-value coding,它是一种使用 字符串 标示符,间接访问 对象属性的机制,而不是直接调用getter和setter方法。通常我们使用valueForKey来替代getter方法,setValue:forKey来替代的方法.
工程当中只有一个对象属性不同时,可以使用以下方法:
修改属性的值
1 |
- ( void )setValue:( id )value forKey:( NSString
*)key; |
拿到修改后的值
1 |
- ( id )valueForKey:( NSString
*)key; |
当工程对象有包含关系时,若要改被包含对象的属性值,可以使用(keyPath)属性链式访问来改变属性的值
修改属性的值
1 |
- ( void )setValue:( id )value forKeyPath:( NSString
*)keyPath; |
拿到修改后的值
1 |
- ( id )valueForKeyPath:( NSString
*)keyPath; |
假如给出的字符串没有对象的属性 会访问 valueForUndefineKey 方法 默认实现是 raise 一个异常 但你可以重写这个方法,setValue的时候也是一样的道理.
KVC代码github托管地址
https://github.com/liukunpengiOS/KVC
git clone 地址
https://github.com/liukunpengiOS/KVC.git
原文地址:http://www.cnblogs.com/liukunpeng/p/3737289.html