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
原文:http://www.cnblogs.com/zhizunbao/p/5414700.html