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

KVC课后笔记

时间:2015-12-31 00:08:28      阅读:169      评论:0      收藏:0      [点我收藏+]

标签:

KVC基本赋值取值方法:

setValueforKey:假如给的key的值name

 1、去类里面找是否有一个方法叫setName:有的话执行该方法,没有的话第二步

 2、去类里面找是否有个叫_name的实例变量,有赋值,没有执行第三步

 3、去类里面找是否有一个叫name的实例变量,有赋值,没有执行第四步

 4、查找当前类是否实现了setValueforUnderfinedKey:方法 如果有方法内部实现,如果还没,就会抛出异常,引起崩溃。

 valueForKey:假如给的key的值name

 1、去类面找是否有一个方法叫name,有的话执行该方法,没有的话第二步

 2、去类里面找是否有个叫_name的实例变量,有取值,没有执行第三步

 3、去类里面找是否有个叫name的实例变量,有取值,没有执行第四步

 4、查找当前类是否实现了valueForKey forUnderfineKey:方法,如果有方法内部实现,如果还没有,就会抛出异常,引起崩溃

 

setValuesForKeysWithDictionary:

终极有用=======================================用于数据解析 加深印象

[实例对象 setValuesForKeysWithDictionary:字典名];可以从字典从提取实例变量到类中

EQ:

 

 [per1 setValuesForKeysWithDictionary:dic];

 

    NSLog(@"%@",[per1 valueForKey:@"name"]);

 

    Student *stu = [[Student alloc]init];

 

    [stu setValuesForKeysWithDictionary:@{@"name":@"taixu",@"age":@"18",@"gender":@"m",@"major":@"iOS",@"id":@"aipao"}];

 

//    NSLog(@"%@",stu);

 

    NSLog(@"%@",[stu valueForKey:@"id"]);

此方法也是非常强大

/如果字典中的Key 多于模型中的实例变量是,我们可以重写此方法 内部空实现,来避免赋值不比匹配出现的崩溃问题

//如果处理特殊情况,如果字典中的KEY值是系统保留字,那么这时候赋值就会出现问题,我们可以在内部做异常处理,代码如下

-(void)setValue:(id)value forUndefinedKey:(NSString *)key{

    if ([key isEqualToString:@"id"]) {

        self.ID = value;

    }

}

-(id)valueForUndefinedKey:(NSString *)key{

    if ([key isEqualToString:@"id"]) {

        return self.ID;

    }

    return nil;

}

 

KVC课后笔记

标签:

原文地址:http://www.cnblogs.com/naizui/p/5090338.html

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