MJExtension的使用

MJExtension是什么?

  • 是一个字典转模型的第三方框架.

有什么优势?

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

怎么使用?

  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文件的结构图
      MJExtension的使用_第1张图片
    • 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的使用)