KVC&KVO

ios讨论群1群:135718460

KVC
1.KVC直接修改某个对象的某个属性
[stu setValue:@"MIKE" forKey:@"name"];
[stu setValue:@10 forKey:@"age"];
2.KVC也可以批量设置某个对象的所有属性
[stu setValuesForKeysWithDictionary:@{@"age": @10,@"name":@"rose"}];
3.批量获取对象的属性
NSDictionary *dict = [stu dictionaryWithValuesForKeys:@[@"name",@"age"]];
4.使用键值路径间接修改对象的属性值
stu.book = [[Book alloc] init];
[stu setValue:@1.22 forKeyPath:@"book.price"];
5.通过KeyPath来获取数组内所有对象的相同属性
NSArray *array = @[stu,stu1,stu2];
NSArray *names = [array valueForKeyPath:@"name"];
6.通过keyPath来计算所有书的价格
stu.books = @[[Book bookWithPrice:2.2],[Book bookWithPrice:2.1],[Book bookWithPrice:10]];
int sum = [[stu valueForKeyPath:@"books.@sum.price"] intValue];
所有用key的地方都可以用keyPath

=======================================KVO=======================================


KVO是监听对象属性的改变
//通过KVO来监听stu的name属性的变化
[stu addObserver:observer forKeyPath:@"name" options:NSKeyValueObservingOptionNew context:nil];
//属性改变后,会调用监听者的方法,并把一系列参数发送过来
- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context
{
NSLog(@"%@",keyPath);
NSLog(@"%@",object);
NSLog(@"%@",change[@"new"]);
}

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值