kvc 就是一种通过字符串去间接操作对象属性的机制,
访问一个对象属性我们可以 person.age 也可以通过kvc的方式 [person valueForKey:@"age"]
keypath 就是属性链式访问 如 person.address.street 有点象java里面的pojo ognl表达式子类的
举例说明用法
使用2个类 playItem playList
在playItem中定义2个变量 NSString *name; float price;
在类中实现一个方法
-(void)setValue:(id)value forUndefinedKey:(NSString *)key
{
}
在playList中定义4个变量 int number; NSString *name; PlayItem *curItem; NSMutableArray *itemList;
在-(id)init{}构造函数进行初始化变量。
使用,例如在main()中调用
PlayList *pl = [[PlayList alloce] init];
[pl setValue:@"前锋播放列表" forKey:@"name"]; //name为PlayList的一个字段
NSLog(@"name is %@.", pl.name);
id v = [pl valueForKey:@"number"]; //number为PlayList的一个字段
[pl setValue:@"当前播放列表" forKeyPath:@"currItem.name"]; //forKeyPath 就是表示带点方法的key值.表示获取currItem的name值