KVC的使用如下:
(1)利用给对象的属性赋值,调用如下两个方法
- (void)setValue:(nullable id)value forKey:(NSString *)key; - (void)setValue:(nullable id)value forKeyPath:(NSString *)keyPath;
其中,setValue:forKeyPath: 这个方法中,可以根据属性的路径赋值。
意思就是说,RiJiModel中有一个“MYCRiJiDiaryModel”类型的对象 diary,而diary类中有个title的属性,
那么,可以给rijiModel的diary对象的title这样赋值:
[rijiModel setValue:@"this is a title name" forKeyPath:@"diary.title"];
这个forKeyPath 会先找到diary这个对象,再找到diary这个对象的title进行赋值;
(2)修改私有的成员变量
oc的系统中有很多私有的成员变量,用点赋值法是不能修改这个私有成员变量的值的。
但是用setValue:forKeyPath: 是可以修改的。
(3)取值
常规的就不说话了,说个比较有意思的:
数组的使用中,有几个比较有意思的:
第一个:取数组的个数;
第二个:取数组的对象中,年龄最大的值;
第三个:取数组的对象中,年龄最小的值;
第四个:取数组的对象中,年龄的平均值。