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

KVC 的局限性

时间:2015-08-29 18:48:56      阅读:116      评论:0      收藏:0      [点我收藏+]

标签:

因为做项目遇到这个问题所以就记录下来,希望你对KVC的理解更加全面。
这里我说的是KVC字典转模型的人时候遇到的。代码如下

+(instancetype)headerModel:(NSDictionary *)dict{
    return  [[self alloc]initWithDict:dict];
}

-(instancetype)initWithDict:(NSDictionary *)dict{
    if (self = [super init]) {
        /**
         *  这个地方如果用KVC 的话有局限性,因为他都是一一对应的,少一个都不行
         */
        [self setValuesForKeysWithDictionary:dict];
//        self.detail = dict[@"detail"];
//        self.province = dict[@"province"];
    }
    return self;
}
如下图:

技术分享
所谓KVC都必须是一一对应的键值对。少一个都会报以上错误
原因如下:
因为KVC会去字典里面找你的键值对,如果找不到的话就会崩掉。
解决方案1:

    self.detail = dict[@"detail"];
    self.province = dict[@"province"];

对每个键值对自己手动赋值。缺点是:项目复杂的话,以上要写很多。
解决方案2:
用MJExtension非常好用的一个字典转模型的第三方框架。

有什么更好的解决方案可以和我向我提出来。我会非常感激
祝好:

版权声明:本文为博主原创文章,未经博主允许不得转载。

KVC 的局限性

标签:

原文地址:http://blog.csdn.net/tubiebutu/article/details/48089381

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