解析plist文件(字典里包着数组,数组中又包含字典)
#import "RootTableViewController.h"
#import "City.h" @interface RootTableViewController () // 声明存放所有城市的大字典
@property (nonatomic, strong) NSMutableDictionary *allDataDict; // 存储所有的key数组(存放省份)
@property (nonatomic, strong) NSMutableArray *allKeysArray; @end @implementation RootTableViewController // 懒加载:使用的时候再创建,可以节省内存
- (NSMutableDictionary *)allDataDict { if (_allDataDict == nil) {
_allDataDict = [NSMutableDictionary dictionary];
}
return _allDataDict;
} - (NSMutableArray *)allKeysArray { if (!_allKeysArray) {
_allKeysArray = [NSMutableArray array];
}
return _allKeysArray;
} - (void)viewDidLoad {
[super viewDidLoad]; // 读取plist文件
[self readPlist];
} // 读取plist文件
- (void)readPlist { // 1.获取文件的路径([NSBundle mainBundle]获取资源库)
NSString *filePath = [[NSBundle mainBundle] pathForResource:@"City" ofType:@"plist"]; // 2.根据路径获取数据
NSDictionary *dataDict = [NSDictionary dictionaryWithContentsOfFile:filePath]; //NSLog(@"%@", dataDict); // 3.遍历字典
for (NSString *key in dataDict) {
//NSLog(@"%@", dataDict[key]); // 创建一个临时数组,用来保存model对象
NSMutableArray *cityArray = [NSMutableArray array]; // 遍历城市数组
for (NSDictionary *dict in dataDict[key]) { // 3.1 创建数据模型
City *city = [[City alloc] init]; // 3.2 使用KVC赋值
[city setValuesForKeysWithDictionary:dict]; // 3.3 添加到数组中
[cityArray addObject:city]; } // 将一组城市保存到大字典中
[self.allDataDict setObject:cityArray forKey:key]; // 将key保存在数组中
[self.allKeysArray addObject:key]; }
} #pragma mark - Table view data source // 设置分区个数
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { return self.allKeysArray.count;
} // 设置每个分区的行数
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { // 找到城市的key(省份)
NSString *key = self.allKeysArray[section]; // 找到城市数组
NSArray *cityArray = [self.allDataDict objectForKey:key]; return cityArray.count;
} // 返回cell
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { static NSString *identifier = @"cell"; UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:identifier]; if (!cell) {
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:identifier];
} // 获取key
NSString *key = self.allKeysArray[indexPath.section]; // 根据key获取城市数组
NSArray *cityArray = [self.allDataDict objectForKey:key]; // 获取城市数组中的model进行赋值
City *city = cityArray[indexPath.row];
cell.textLabel.text = city.name;
cell.detailTextLabel.text = city.personNum; return cell;
} @end
解析plist文件(字典里包着数组,数组中又包含字典)的更多相关文章
- [Xcode 实际操作]七、文件与数据-(8 )读取和解析Plist文件(属性列表文件)
目录:[Swift]Xcode实际操作 本文将演示如何读取和解析Plist文件,即属性列表文件. 它是用来存储,串行化后的对象的文件. 在项目名称上点击鼠标右键,弹出右键菜单, 选择[New File ...
- plist文件无法打包进.a静态库中
问题: 之前一直在做静态库的编写与维护,也一直知道静态库的图片资源是没办法打进.a中的.可是突然有个想法.由于有非常多參数的配置是在一个plist文件里的.尽管也知道这是一个plist文件,可是想想和 ...
- ios开发学习- 简易音乐播放器2 (基于iPhone4s屏幕尺寸)-- 歌词解析--plist文件应用--imageNamed图片加载耗内存
声明:(部分图片来自网络,如果侵犯了您的权益请联系我,会尽快删除!) 又是音乐播放器,不过这次和上次不一样了,准确说这次更像播放器了,初学者不建议看这个,可以先看前面一个音乐播放器(1),当然 我没加 ...
- 【转】java 解析 plist文件
为了方便的将spritesheet的图导入我自己的动画编辑器!我做了plist文件解析DOM解析比较麻烦 因为element getChildNodes 会获取到text对象.而这个对象可能是一个空白 ...
- iOS 判断数组array中是否包含元素a,取出a在array中的下标+数组方法详解
目前找到来4个解决办法,第三个尤为简单方便 NSArray * arr = @["]; //是否包含 "]) { NSInteger index = [arr indexOfObj ...
- springboot jar文件打zip包运行linux环境中
1.添加打包配置文件 1.1 assembly.xml <assembly xmlns="http://maven.apache.org/plugins/maven-assembly ...
- 解析excel文件并将数据导入到数据库中
今天领导给安排了一个临时工作,让我将一个excel里面的数据解析后放入数据库中,经过一个下午的努力成功完成,现在将代码献上,希望对大家有所帮助 一.需要导入的jar 1.commons-collect ...
- 判断数组(array)中是否包含某个字符(contains)
$a="a","","b" $a -contains "a" 返回 $true $a -notcontains &quo ...
- Plist文件与数据解析
综述 初步阶段当我们做个需要点数据的练习时(比如购物商品展示),我们可能是将数据直接写在代码中,比如说定义一个字符串数组或存放字典的数组.但这其实并不是一种合理的做法.因为如果当数据修改的时候,就要经 ...
随机推荐
- AC_Dream 1224 Robbers(贪心)
题意:n个抢劫犯分别抢到的金钱是k1, k2, k3,...,一共得到的金钱是m, 但是在分钱的时候是按照x1/y, x2/y, x3/y,....的比例进行分配的!这样的话 一些抢劫犯就会觉得不公平 ...
- MVC 4 中编译时,让View 也弹出异常
前言 MVC在编译时,不会提示View中的错误,我们在发布项目的时候会一个一个的提示异常,项目大的时候会非常头疼,因为每次发布都需要至少5分钟,最后收到只有一个异常信息,如果页面异常过多,例如最近整理 ...
- linux 多台 主机的免登录ssh的配置
1.首先检查 有没有安装ssh rpm-qa | grep ssh 如果没有安装 yum install ssh 2.在每一台机器上执行 ssh-keygen -t rsa 会在root/.ssh ...
- Understanding CMS GC Logs--转载
原文地址:https://blogs.oracle.com/poonam/entry/understanding_cms_gc_logs Understanding CMS GC Logs By Po ...
- [python]爬代理ip v2.0(未完待续)
爬代理ip 所有的代码都放到了我的github上面, HTTP代理常识 HTTP代理按匿名度可分为透明代理.匿名代理和高度匿名代理. 特别感谢:勤奋的小孩 在评论中指出我文章中的错误. REMOTE_ ...
- [python]pythonic的字典常用操作
注意:dct代表字典,key代表键值 1.判断字典中某个键是否存在 实现 dct.has_key(key) #False 更Pythonic方法 key in dct #False 2.获取字典中的值 ...
- Android学习笔记之ConnectivityManager+NetWorkInfo
PS:眼看就要开学了,该收收心了. 学习内容: 1.ConnecivityManager 2.NetWorkInfo ConnectivityManger:网络连接管理者,用于管理Android设 ...
- PHP 简单处理--文件下载--文件上传
文件下载部分 从 down 目录下下载,先获取目录下所有文件,再为每个文件添加download 信息,主要是文件名,后缀的关系. 分两部分,down_1.php 部分初始化,点击download 则跳 ...
- SQLDMOHelper
在网上传闻SQLDMO是个好东西,当时没有注意这个传闻是什么时候了,后来才在微软的官网上看见,从SQL Server2008开始就不用SQLDMO了,取而代之的是SMO.无奈了,还写了个Helper. ...
- Android 中 Handler 引起的内存泄露
在Android常用编程中,Handler在进行异步操作并处理返回结果时经常被使用.其实这可能导致内存泄露,代码中哪里可能导致内存泄露,又是如何导致内存泄露的呢?那我们就慢慢分析一下.http://w ...