首页 > 编程语言 > 详细

解析plist文件(字典里包着数组,数组中又包含字典)

时间:2016-04-20 23:46:29      阅读:576      评论:0      收藏:0      [点我收藏+]
  1 #import "RootTableViewController.h"
  2 #import "City.h"
  3 
  4 @interface RootTableViewController ()
  5 
  6 // 声明存放所有城市的大字典
  7 @property (nonatomic, strong) NSMutableDictionary *allDataDict;
  8 
  9 // 存储所有的key数组(存放省份)
 10 @property (nonatomic, strong) NSMutableArray *allKeysArray;
 11 
 12 @end
 13 
 14 @implementation RootTableViewController
 15 
 16 
 17 // 懒加载:使用的时候再创建,可以节省内存
 18 - (NSMutableDictionary *)allDataDict {
 19     
 20     if (_allDataDict == nil) {
 21         _allDataDict = [NSMutableDictionary dictionary];
 22     }
 23     return _allDataDict;
 24 }
 25 
 26 - (NSMutableArray *)allKeysArray {
 27     
 28     if (!_allKeysArray) {
 29         _allKeysArray = [NSMutableArray array];
 30     }
 31     return _allKeysArray;
 32 }
 33 
 34 
 35 
 36 - (void)viewDidLoad {
 37     [super viewDidLoad];
 38     
 39     // 读取plist文件
 40     [self readPlist];
 41 }
 42 
 43 
 44 
 45 // 读取plist文件
 46 - (void)readPlist {
 47     
 48     // 1.获取文件的路径([NSBundle mainBundle]获取资源库)
 49     NSString *filePath = [[NSBundle mainBundle] pathForResource:@"City" ofType:@"plist"];
 50     
 51     
 52     // 2.根据路径获取数据
 53     NSDictionary *dataDict = [NSDictionary dictionaryWithContentsOfFile:filePath];
 54     
 55     //NSLog(@"%@", dataDict);
 56     
 57     
 58     // 3.遍历字典
 59     for (NSString *key in dataDict) {
 60         //NSLog(@"%@", dataDict[key]);
 61         
 62         // 创建一个临时数组,用来保存model对象
 63         NSMutableArray *cityArray = [NSMutableArray array];
 64         
 65         
 66         // 遍历城市数组
 67         for (NSDictionary *dict in dataDict[key]) {
 68             
 69             // 3.1 创建数据模型
 70             City *city = [[City alloc] init];
 71             
 72             // 3.2 使用KVC赋值
 73             [city setValuesForKeysWithDictionary:dict];
 74             
 75             // 3.3 添加到数组中
 76             [cityArray addObject:city];
 77             
 78         }
 79         
 80         
 81         // 将一组城市保存到大字典中
 82         [self.allDataDict setObject:cityArray forKey:key];
 83         
 84         // 将key保存在数组中
 85         [self.allKeysArray addObject:key];
 86         
 87     }
 88 }
 89 
 90 
 91 
 92 #pragma mark - Table view data source
 93 
 94 // 设置分区个数
 95 - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
 96     
 97     return self.allKeysArray.count;
 98 }
 99 
100 
101 // 设置每个分区的行数
102 - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
103     
104     // 找到城市的key(省份)
105     NSString *key = self.allKeysArray[section];
106     
107     // 找到城市数组
108     NSArray *cityArray = [self.allDataDict objectForKey:key];
109     
110     return cityArray.count;
111 }
112 
113 
114 // 返回cell
115 - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
116     
117     static NSString *identifier = @"cell";
118     
119     UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:identifier];
120     
121     if (!cell) {
122         cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:identifier];
123     }
124     
125     
126     // 获取key
127     NSString *key = self.allKeysArray[indexPath.section];
128     
129     // 根据key获取城市数组
130     NSArray *cityArray = [self.allDataDict objectForKey:key];
131     
132     // 获取城市数组中的model进行赋值
133     City *city = cityArray[indexPath.row];
134     cell.textLabel.text = city.name;
135     cell.detailTextLabel.text = city.personNum;
136 
137     
138     return cell;
139 }
140 
141 @end

 

解析plist文件(字典里包着数组,数组中又包含字典)

原文:http://www.cnblogs.com/zhizunbao/p/5414700.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!