本人最常用的MJExtension字典转模型的方法,开发中也经常用到,在复杂的数据结构里面,个人感觉比kvc简单方便
> + (NSMutableArray *)objectArrayWithKeyValuesArray:(NSArray *)keyValuesArray 字典数组转换成模型数组
> + (instancetype)objectWithKeyValues:(id)keyValues字典转化为模型
废话就不再说了,举个我项目中数据例子吧,教你使用' MJExtension'方法字典转模型方法
1.先看一下这个数据:
2.当你请求到数据,那肯定要见模型类了:
关于 for循环外层model的事情就不用你操心啦,MJ都已帮你完成。
当然 这个MyMessageModel 是外层的model,还有个里面一层的model:
3.现在,我们model 都已经写好了,哪下面就去请求数据的地方看看吧
这里解析数据的我也已经框起来了,是不是特别简单,也是上面说的最常用的2个方法,字典数据转换成了模型数组.
4.现在看似已经完成了整个的解析,其实不然,重要的是里层的model里面的数据要怎么取的到呢?
4.1. MJExtension 提供了一个 load方法,将你的数据的key和model关联起来就可以了看似非常简单,本人也是经历了一番周折才看到的。看图:
这个 可不是随便乱写的key value ,看第一个 postman 解析的数据可以看到, model里面 有个子model对应的key 正好就是 content,所以
就return @{@"content":@"MyMessageContentModel"};
//贴出方法, 解析子Model数据
+(void)load{
[self mj_setupObjectClassInArray:^NSDictionary *{
return @{@"content":@"MyMessageContentModel"};
}];
}
5. 遍历子model里的内容,拼接在一起
-(void)setContent:(NSArray *)content{
_content = content;
NSMutableArray * arr = [NSMutableArray arrayWithCapacity:0];
for (MyMessageContentModel * model in content) {
NSString * tempStr = model.content;
[arr addObject:tempStr];
}
self.pinchuan = [arr componentsJoinedByString:@""];
}