AZ_字典转模型

字典转模型


  • 1.简单的字典转模型

-(instancetype)initWithDict:(NSDictionary *)dict

{

 if (self=[super init]) {

 self.name=dict[@"name"];

 self.icon=dict[@"icon"];

 //简单的字典转模型可以直接采用KVC来转

// [self setValuesForKeysWithDictionary:dict];

 }

 return self;

}

+(instancetype)carsWithDict:(NSDictionary *)dict

{

 return [[self alloc]initWithDict:dict];

}
  • 2.字典中包含数组

    • 2.1首先在头文件创建一个数组包含子模型

    • 2.2在.m文件中将字典模型转为车模型后存放入车模型数组中


/*分组 */

@interface AZCarGroup : NSObject

/*车模型数组 */

@property(nonatomic,strong)NSArray *cars;

/*组名*/

@property(nonatomic,copy)NSString *title;

-(instancetype)initWithDict:(NSDictionary *)dict;

+(instancetype)carGroupWithDict:(NSDictionary *)dict;

-(instancetype)initWithDict:(NSDictionary *)dicts

{

 if (self=[super init]) {

 self.title=dicts[@"title"];

 //将字典数组中的字典转为车模型存放到头文件的数组中

 NSMutableArray *cars=[NSMutableArray array];

 for (NSDictionary *dict in dicts[@"cars"]) {

 AZCar *car=[AZCar carsWithDict:dict];

 [cars addObject:car];

 }

 self.cars=cars;

 }

 return self;

}

+(instancetype)carGroupWithDict:(NSDictionary *)dicts

{

 return [[self alloc]initWithDict:dicts];

}
  • 一般在使用我们的模型数据时采用懒加载方式加载

//所有车数据

-(NSArray *)carGroups

{

 if (_carGroups==nil) {

 //加载plist数据

 NSArray *dictArr=[NSArray arrayWithContentsOfFile:[[NSBundle mainBundle]pathForResource:@"cars.plist" ofType:nil]];

 //字典转模型

 NSMutableArray *tempArray=[NSMutableArray array];

 for (NSDictionary *dict in dictArr) {

 AZCarGroup *carGroup=[AZCarGroup carGroupWithDict:dict];

 [tempArray addObject:carGroup];

 }

 self.carGroups=tempArray;

 }

 return _carGroups;

}
  • 3.MJExtension框架的使用

    • 首先导入框架

    • 确定Cars里面装的AZCar模型

    • 将模型装入数组

    • 框架的使用简化了复杂机械的字典转模型操作

#import "MJExtension.h"


 //所有车数据 

-(NSArray *)carGroups

{

 if (_carGroups==nil) {

 //通过返回的字典确定cars数组中所装的内容为AZCar模型

 [AZCarGroup mj_setupObjectClassInArray:^NSDictionary *{

    return @{@"cars":[AZCar class]};

 }];

 _carGroups=[AZCarGroup mj_objectArrayWithFilename:@"cars.plist"];

 }

 return _carGroups;

}

转载于:https://www.cnblogs.com/azhang-coder/p/6099115.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值