码迷,mamicode.com
首页 > 其他好文 > 详细

关于KVC键值编码

时间:2016-05-04 18:52:38      阅读:139      评论:0      收藏:0      [点我收藏+]

标签:

转载自http://www.tuicool.com/articles/2aYfy2

Key-value coding,它是一种使用字符串标识符,间接访问对象属性的机制,而不是直接调用getter 和 setter方法。通常我们使用valueForKey 来替代getter 方法,setValue:forKey来代替setter方法。

首先来看一看KVC与setter,getter方法赋值的区别

Persion *person =  [ [Person alloc] init ];

//不使用KVC
person.name = @"hufeng" ;

//使用KVC的写法
[person  setValue:@"hufeng" forKey:@"name"];

下面我们写个复杂点的:我们有一个人 这个人有一个手机 这个手机类 有一个电池类 我们要获取这个电池类。

//使用属性
Persion *person =  [ [Person alloc] init ];

Phone *phone = person.phone;

Battery *battery = phone.battery;
//使用KVC
Battery *battery = [person valueForKeyPath: @"phone.battery" ];

注意- valueForKeyPath 里面的值是区分大小写的,你如果写出Phone.Battery 是不行的。

KVC 最常用的还是在序列化和反序列话对象。我们经常需要把json字符串反序列化成我们想要的对象 下面是一个例子 将字典用NSKeyedArchiver 序列化成对象。

- (id)initWithDictionary:(NSDictionary *)dictionary {

    self = [self init];

    if (self){

        [self setValuesForKeysWithDictionary:dictionary];

    }

    return self;

}

 

关于KVC键值编码

标签:

原文地址:http://www.cnblogs.com/superorangecc/p/5459060.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!