详解Obejective-C中将JSON数据转为模型的方法
在我们的日常开发中需要对加载的一些本地数据例如plist、json等文件中的数据进行模型转化,而苹果也为我们提供了一种非常方便的键值转换方式KVC。然而KVC在某些情况下并不能保存数据的转换成功,比如必须保证模型的属性个数大于等于字典个数,也要必须属性名称与字典的key相同等。所以这次我们假设下属性名称与字典中的key不一致的时候转换方法。
首先我们还是先要尝试下使用KVC的方式来解决这个问题
模型如下:
@property(nonatomic,strong)NSString*title; @property(nonatomic,strong)NSString*name; @property(nonatomic,strong)NSString*ID;
JSON数据如下:
{
"title":"顺平侯",
"name":"赵云",
"id":"sph"
},
{
"title":"恒侯",
"html":"张飞",
"id":"hh"
},
{
"title":"威侯",
"html":"马超",
"id":"wh"
},
{
"title":"刚侯",
"html":"黄忠",
"id":"gh"
},
{
"title":"寿亭侯",
"html":"关羽",
"id":"sth"
}
从上面的数据对比我们不难发现,因为在OC中的id是关键字所有我们使用ID来替代,但是这样的话就不能直接使用KVC,所以我们需要进行相应的处理来继续使用我们的KVC转换模型。代码如下:
首先在模型.h文件中更新一下代码,提供一个类方法进行模型转换:
@property(nonatomic,strong)NSString*title; @property(nonatomic,strong)NSString*name; @property(nonatomic,strong)NSString*ID;
+(instancetype)heroDict:(NSDictionary*)dict;