本人最常用的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:@""];
}