key-value-coding
通过key值去取值和赋值
主要方法
setValue:forKey:(为对象的属性赋值)
setValue: forKeyPath:(为对象的属性赋值(包含了setValue:forKey:的功能,并且还可以对对象内的类的属性进行赋值))
valueForKey:(根据key取值)
valueForKeyPath:(根据keyPath取值)
setValuesForKeysWithDictionary:(对模型进行一次性赋值)
KVC和setter和getter方法的区别
可以给私有属性赋值
valueForKeyPath和valueForKey的区别
valueForKeyPath可以给属性的属性赋值
赋值原理
1.去模型中查看是否有setter方法,有就直接调用
2.查看是否有属性icon,有就直接赋值 icon = dict[@"icon"]
3.查看是否有_icon属性,有就直接赋值_icon=dict[@"icon"]
keyPath的巧妙用法
将people中所有的name首字母大写
[array valueForKeyPath:@"name.capitalizedString"]