详解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;