1、
等同于下面的方法
(从字典映射到一个对象,这是KVC中的一个方法所提供的,这个方法就是 setValuesForKeysWithDictionary: ,非常好用,不需要你来一一的给对象赋值而直接从字典初始化即可,但用的不好会经常崩溃)
2、
KVC还有一个很重要的特点,自动装箱拆箱功能。
@interface Book : NSObject {
NSString *name;
Author *author;
float price;
}
@end
实现文件没有动。
Book *book=[[[Book alloc] init] autorelease];
[book setValue:@"10.4" forKey:@"price"];
NSLog(@"book price is %@",[book valueForKey:@"price"]);
可以看到给price输入的是NSString类型,但是没有问题,因为KVC方式会根据字符串自动转型为适当的数值。再看打印price属性,%@是打印对象,而price属性是float基本型,这里KVC肯定做了自动装箱的处理,将基本型转为NSNumber对象。
3、
kvc可以把字典转化为model,也可以把model转化成字典。
把model转化成字典的方法如下:
(p是model)
4、存值、取值
5、kvc可用于计算
使用@sum
@min
@max
@avg
@count
进行聚合运算
6、setValue forKey 和 setValue forKeyPath的区别:
前者只能给属性赋值
后者可以给属性的属性赋值
同理 取值的时候也是
7、最常用的地方:
模型转字典、字典转模型
8、