iOS MJExtension框架之字典数组转模型数组

时间:2015-01-14 22:47:42   收藏:0   阅读:21728

1.下面这样的数组,怎么转成模型

技术分享 技术分享 技术分享 技术分享

 

2.分析

技术分享

3.新增模型:城市分组,城市,区,每个模型都有name,抽一个父类

技术分享

4.每个模型分别具备的属性

BaseModel : NSObject    属性 NSString *name

CitySection : BaseModel   属性 NSArray *cities

City : BaseModel      属性 NSArray *districts; 属性 BOOL hot;

District : BaseModel     属性  NSArray *neighborhoods

5.控制器

5.1 导入框架 #import "MJExtension.h"

5.2 控制器的成员属性 : @property (nonatomic,strong) NSArray *citySections;

5.3 延迟加载

 1 - (NSArray *)citySections
 2 {
 3     if (_citySections == nil) {
 4         NSString *path = [[NSBundle mainBundle] pathForResource:@"Cities.plist" ofType:nil];
 5         NSArray *dataArray = [NSArray arrayWithContentsOfFile:path];
 6         NSMutableArray *arrayM = [NSMutableArray arrayWithCapacity:dataArray.count];
 7         
 8         for (NSDictionary *dict in dataArray) {
 9         // MJExtension框架里,字典转模型的方法
10            CitySection *section = [CitySection objectWithKeyValues:dict];
11             [arrayM addObject:section];
12         }     
13         _citySections = arrayM;
14     }
15 
16     return  _citySections;
17 }

6 在模型类的.m文件中

6.1导入框架  #import "MJExtension.h"

6.2 实现方法

目的是告诉控制器的  objectWithKeyValues: 方法 , cities数组里面装的时city模型

// 在CitySection.m中
- (NSDictionary *)objectClassInArray
{
    return @{ @"cities" : [City class] };
}
// 在 City.m中
- (NSDictionary *)objectClassInArray
{
    return @{ @"districts" : [District class]};
}

注:District.m中,就不用这么干了,因为 District模型的属性 NSArray *neighborhoods 里装的是NSString 

7 看看转换的结果

技术分享

 

评论(2
iOS 2015-11-30 00:46:58
求源码,看得是不很明白。  谢谢楼主。
AbnerChen 2016-01-08 13:01:34
  兄弟   这两个方法都是类方法  不是对象方法
2
© 2014 mamicode.com 版权所有 京ICP备13008772号-2  联系我们:gaon5@hotmail.com
迷上了代码!