A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 余丽丽 高级黑马   /  2015-8-11 01:22  /  484 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

* setValue:forKeyPath:
** 示例: [self setValue:dict[@"icon"] forKeyPath:@"icon"]
** 含义: 表示根据forKeyPath:@"icon"提供的@"icon"去self对象中查找名字叫icon的属性, 找到以后把dict[@"icon"]中获取到的值赋值给self的icon属性。


* setValuesForKyesWithDictionary:
** 含义: 更简便的调用方式。内部相当于调用了多次setValue:forKeyPath:

** 使用KVC时的注意点:
1> 必须保证字典中的key与模型的属性名称一致。
2> 必须保证模型的属性个数与字典一致或者模型的属性个数要大于等于字典的个数。

* 演示KVC:
1> 新建一个model类。
2> 演示对字符串类型、数字类型进行KVC赋值
3> 通过KVC取值。
id v = [对象 valueForKeyPath:@"key"];
int v1 = [[对象 valueForKeyPath:@"key"] intValue];

4> 把模型转成字典, 把对象中指定的属性转换为字典。
NSDictioanry *dict = [对象 dictionaryWithValuesForKeys:@[@"name", @"age"]];

5> 把一个person数组中的每个person对象的name都获取出来然后放到一个新的数组中。
(
        NSArray *names = [person数组 valueForKeyPath:@"name"];
)

6> keyPath介绍, 人拥有一本书, 通过kvc获取人所拥有的书的名称
(
        NSString *bkName = [person valueForKeyPath:@"book.name"];
       
        等价于
       
        NSString *bkName = person.book.name;
)

* KVO (Key Value Observing), 监听对象的属性值变化。

1 个回复

倒序浏览
学到了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马