美文网首页IOSiOS Developer
MJExtension的简单实用

MJExtension的简单实用

作者: 断剑 | 来源:发表于2016-06-02 21:33 被阅读351次
  • 温馨提醒:今天使用cocoaPods导入最新版本,使用时发现需要在方法名称前面添加mj_。话说到现在我才使用cocoapods,是有多懒。。。
服务器数据返回结构

模型代码

//  ZZYProjectModel.h
#import <Foundation/Foundation.h>

@class ZZYProjectLeaderModel;

@interface ZZYProjectModel : NSObject

@property (nonatomic, copy) NSString * ID;

@property (nonatomic, copy) NSString * name;

@property (nonatomic, copy) NSString * progress;

@property (nonatomic, strong) NSArray * members;

@property (nonatomic, strong) ZZYProjectLeaderModel * leader;

@end

//  ZZYProjectModel.m
#import "ZZYProjectModel.h"
#import "ZZYProjectMemberModel.h"

@implementation ZZYProjectModel
+ (NSDictionary *)objectClassInArray
{
    return @{@"members":[ZZYProjectMemberModel class]};
}

+ (NSDictionary *)replacedKeyFromPropertyName
{
    return @{@"dec":@"description",
             @"ID":@"id"};
}

首先我们分析数据的层次结构:

  • 数据最外层是一个字典,我们需要获得的是字典中的 projects 数组数据
  • projects 数组是一个一个的字典,而这个字典中又包含字典 leader 和字典数组 members

字典转换模型分析

  • 此处我是将字典 leader 与 字典数组 members 分别放在了两个模型 ZZYProjectLeaderModel 与 ZZYProjectMemberModel中
  • 上述两个模型统一位于模型 ZZYProjectModel 中

控制器中模型的创建过程


//在数据网络请求成功之后,获取到需要的数据
 NSArray * dictArr = [NSArray arrayWithArray:responseObject[@"data"][@"projects"]];

//调用MJExtension的方法,将字典数组转化为模型数组
 NSArray * modelsArr = [ZZYProjectModel objectArrayWithKeyValuesArray:dictArr];
       
//遍历模型数组,将模型数组的模型数据赋值给一个数组
 NSMutableArray * arr = [NSMutableArray array];
        for (ZZYProjectModel * model in modelsArr) {
            [arr addObject:model];
        }
//此处可以将数组赋值给dataArr数据源数组,进行相应的操作
  • 以上是我最常用的创建方式

几点注意

  • 创建模型的时候要保证模型的属性与返回的数据中字典的key值相同
  • 当服务器返回的数据key值与系统关键字冲突的时候,最常见的例如:id,我们需要在模型.m文件中使用下述方法替换关键字

+ (NSDictionary *)replacedKeyFromPropertyName

  • 字典中包含数组字典的时候,想要将数组字典页转换为模型,需要在字典对应的模型中,声明数组字典对应key指的数组;并且在.m文件中使用下述方法声明该数组中的成员变量的类型

+ (NSDictionary *)objectClassInArray

  • 本人最常用的MJExtension字典转模型的方法
  • + (NSMutableArray *)objectArrayWithKeyValuesArray:(NSArray *)keyValuesArray 字典数组转换成模型数组

相关文章

网友评论

  • 1b2ae550dc99:师哥,你好!
    断剑:@行进的NSLog 小师弟,好好跟着师哥混,没事打个赏,等哪天取出来,师哥请你吃大餐

本文标题:MJExtension的简单实用

本文链接:https://www.haomeiwen.com/subject/rcukdttx.html