今天学习的内容是KVC(KeyValueCoding )键值对编码
键值对编码通常针对于对象去使用 ,有四种方法
1、valueForKey
2、setValue: ForKey:
3、valueForKeyPath
4、setValue: ForKeyPath:
复习三种赋值方法:
1、对象引用赋值
person.name = @"jack";
2、通过中辍符的形式调用对象方法
[person setName:@"jack"];
3、KVC 写法:通过找到对象的属性的键,设置键的值
setValue为你要设置类属性的值,forKey为你要设置的类属性的名称
[person setValue:@"jack" forKey:@"name"];
KVC写法:获取对属性键的值
NSLog( @"person name is %@", [person valueForKey:@"name"] );
疑问:1、既然有更简单的方法,为什么需要用KVC这种相对来说很多字母的方法呢?
答:KVC写法:优点为安全机制完善,通过Key去查找Value的形式有助于在后期开发的设计模式上有很大的帮助。
KVC 也可以用于一般的系统的对象,如字典,数组
NSDictionary *dict = @{@"name" : @"rose"};
NSLog(@"dict name value is :%@", [dict valueForKey:@"name"] );
valueForKeyPath , setValue: ForKeyPath: 键路径
通常是指通过初始的键找到键下面的相关的键,一般的形式是 xxx.yyy
利用KVC的快速数学运算计算(在利用valueForKeyPath(按键路径)时会使用):
------针对于集合使用------
@sum:求和 @min:求最小值 @max:求最大值 @avg:求平均
使用形式:valueForKeyPath:@"集合.@**.属性"
@count:求个数 使用形式:valueForKeyPath:@"集合.@count"
//unrecognized selector sent 为无法识别对象方法或者类方法