下载地址
OC版: https://github.com/CoderMJLee/MJExtension
Swift版: https://github.com/kakaopensource/KakaJSON
MJExtension是什么?
- 是一个字典转模型的第三方框架.
- JSON和模型之间的快速,便捷且非侵入式的转换框架。
有什么优势?
- 不需要强制继承很多类.
- 不想使用此框架时,直接删除框架,无需更改代码.
- 也就是说,对代码没有污染.
怎么使用?
- 普通的 字典-->模型 (模型中不嵌套模型)
- 第一种方法:
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; }
- 第一种方法:
-
(模型中嵌套其他模型) 的字典装模型
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) .
- 告诉框架,模型数组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
文件中vip
是number
类型. 值为1 (值只有不为 0
,都是YES
)
模型中
vip
属性的设置.为BOOL类型
@interface HUHStatuses : NSObject
/*
getter=isVip是什么?
self.vip ,self.isVip 都可以获取vip这属性.
规范,英文语法 isVip == 是否是vip
*/
@property (nonatomic,assign, getter=isVip) BOOL vip;
....
显示的结果为:
网友评论