美文网首页
MJExtension的使用

MJExtension的使用

作者: js_huh | 来源:发表于2019-12-06 12:09 被阅读0次

    下载地址
    OC版: https://github.com/CoderMJLee/MJExtension
    Swift版: https://github.com/kakaopensource/KakaJSON

    MJExtension是什么?

    • 是一个字典转模型的第三方框架.
    • JSON和模型之间的快速,便捷且非侵入式的转换框架。

    有什么优势?

    • 不需要强制继承很多类.
    • 不想使用此框架时,直接删除框架,无需更改代码.
    • 也就是说,对代码没有污染.

    怎么使用?

    1. 普通的 字典-->模型 (模型中不嵌套模型)
      • 第一种方法: mj_objectArrayWithKeyValuesArray :
        通过字典数组---> 模型数组
        参数keyValuesArray 字典数组 (可以是 NSDictionary、NSData、NSString)
      -(NSArray *)tgsData{
      NSArray *tgsDictArray = [NSArray arrayWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"tgs.plist" ofType:nil]];
      _tgsData = [HUHTgs mj_objectArrayWithKeyValuesArray:tgsDictArray];
      return _tgsData;
      }
      
      • 第二种方法:mj_objectArrayWithFilename:
        通过plist来创建模型数组
        参数filename 文件名 (仅限于mainBundle中的文件)
      -(NSArray *)tgsData{
      if(_tgsData == nil){
          _tgsData = [HUHTgs mj_objectArrayWithFilename:@"tgs.plist"];
      }
      return _tgsData;
      }
      

    1. (模型中嵌套其他模型) 的字典装模型
      2.1 模型中嵌套模型 是什么?
      • plist文件的结构图
      • HUHGroup类型
        注意: cars是模型数组,里面装载着HUHCar类型的对象.
        @interface HUHCarGroup : NSObject
        @property (nonatomic, copy) NSString *header;
        @property (nonatomic, copy) NSString *footer;
        @property (nonatomic, strong) NSArray *cars;
        @end
        

    2.2 将字典--->模型,使用框架(MJExtension) .

    1. 告诉框架,模型数组cars里面的对象是什么类型 ?
      第一种方法: mj_objectClassInArray - 在有模型数组(cars)的类(HUHCarGroup)里面使用
      // 此方法不需要引入类型.
      +(NSDictionary *)mj_objectClassInArray{
            return @{@"cars" : @"HUHCar"};
        }
      // 告诉框架,属性cars,是HUHCar类型.
      +(NSDictionary *)mj_objectClassInArray{
        return @{@"cars":[HUHCar class]};
        }
    

    第二种方法: mj_setupObjectClassInArray 设置指定的模型数组对象的类型

    -(NSArray *)carData{
        if (_carData == nil) {
            [HUHCarGroup mj_setupObjectClassInArray:^NSDictionary *{
                return @{@"cars": @"HUHCar"};
                //return @{@"cars": [HUHCar class]};
            }];
            //通过plist文件,转换为模型数组.
            _carData = [HUHCarGroup mj_objectArrayWithFilename:@"cars.plist"];
        }
        return _carData;
    }
    

    框架自动将Number类型转换为BOOL类型
    示例:
    plist文件中vipnumber类型. 值为1 (值只有不为 0,都是YES)


    模型中vip属性的设置.为BOOL类型
       @interface HUHStatuses : NSObject
       /*
        getter=isVip是什么?
        self.vip ,self.isVip 都可以获取vip这属性.
        规范,英文语法 isVip == 是否是vip
        */
       @property (nonatomic,assign, getter=isVip) BOOL vip;
       ....
    

    显示的结果为:



    相关文章

      网友评论

          本文标题:MJExtension的使用

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