本文主要是介绍KVC 的局限性,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
因为做项目遇到这个问题所以就记录下来,希望你对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 的局限性的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!