美文网首页
【Objective-C】简单的省市区的数据解析

【Objective-C】简单的省市区的数据解析

作者: 酷酷的小虎子 | 来源:发表于2016-04-16 22:31 被阅读287次

如图所示,给出一份".txt"文档,如何对文档的内容进行数据解析?


省市区.txt

那么得到这样的文档后应该从哪里入手呢?

".txt"文档中存储的是一个长字符串,要对这个长字符串进行分割
再利用数组和字典的嵌套,最终生成我们想要的数据源数组

下面带大家画图分析一下:


数组和字典嵌套分析图

根据上图分析:
最后数据解析玩最外层是应该是大数组,存储的是各个省及直辖市,例如北京,吉林省等;

省的数组里又有一个省的字典,其中字典包括省名,市数组两对键值对,例如:城市名:吉林,市数组:吉林市,长春市,通化市等

同理可以得到市的数组,市数组里又存储了若干含有市名,区数组两对键值对的字典,最后区数组里存储了若干个区

@property(nonatomic, retain)NSMutableArray *dataSource;
@property(nonatomic, retain)UITableView *tabelView;
//实现代码如下,解释都用注释标明
NSString *string = [NSString stringWithContentsOfFile:@"/Users/Desktop/UI_省市区数据解析练习/area.txt" encoding:NSUTF8StringEncoding error:nil];
//分割字符串: 使用:"\n"
NSArray *array = [string componentsSeparatedByString:@"\n"];
//初始化数据源数组 *非常重要*
self.dataSource = [NSMutableArray array];
//遍历array进行结构的划分
for (NSString *str in array) {
    if (![str hasPrefix:@" "]) {
        //创建省的字典(包含一个省的完整信息)
        NSMutableDictionary *proDic = [NSMutableDictionary dictionary];
        //设置这个省的名字键值对
        [proDic setObject:str forKey:@"proName"];
        //创建这个省所对应的城市数组
        NSMutableArray *cityArray = [NSMutableArray array];
        [proDic setObject:cityArray forKey:@"cityArray"];
        //将省的字典添加到数据源数组中
        [self.dataSource addObject:proDic];
    }else if (![str hasPrefix:@"    "]) {
        //取出当前市应该存放的省字典
        NSMutableDictionary *proDic = [self.dataSource lastObject];
        //创建当前市的字典
        NSMutableDictionary *cityDic = [NSMutableDictionary dictionary];
        //设置这个市的键值对
        [cityDic setObject:str forKey:@"cityName"];
        //创建这个市所对应的区数组
        NSMutableArray *zoneArray = [NSMutableArray array];
        [cityDic setObject:zoneArray forKey:@"zoneArray"];
        //取出当前城市字典应该在的数组
        NSMutableArray *cityArray = [proDic objectForKey:@"cityArray"];
        [cityArray addObject:cityDic];
    }else {
        //将区的名字添加到对应城市的区数组
        //获取当前区在的省
        NSMutableDictionary *proDic = [self.dataSource lastObject];
        //获取当前区所在的城市数组
        NSMutableArray *cityArray = [proDic objectForKey:@"cityArray"];
        //获取当前区所在的城市字典
        NSMutableDictionary *cityDic = [cityArray lastObject];
        //把当前的名字加到对应的区数组中
        NSMutableArray *zoneArray = [cityDic objectForKey:@"zoneArray"];
        [zoneArray addObject:str];
    }
}
NSLog(@"%@", self.dataSource);
数据分析打印结果

解析完后数据源中没有数组首先要去看数组是否进行了初始化,很关键

这样我们的数据分析就完成了,最后可以创建多个TableView显示数据源数组,点击后刷新TableView实现以下效果:


省市区界面

相关文章

  • 【Objective-C】简单的省市区的数据解析

    如图所示,给出一份".txt"文档,如何对文档的内容进行数据解析? 那么得到这样的文档后应该从哪里入手呢? ".t...

  • 省市区数据获取(三)- 装饰器适应不同需求

    在 省市区数据获取 - Jsoup解析网页获取 中我们解析到了我们想要的数据,不用人工去获取了,但是我们还是有写问...

  • Objective-C消息传递详解

    简介 前面的文章了解了OC对象(Objective-C对象解析),本文将简单介绍Objective-C消息传递的消...

  • 简单的数据解析

    1.XML解析(1)DOM解析一般使用系统自带的类NSXMLParser和谷歌提供的GDataXMLNode的开源...

  • 数据解析

    XML数据格式解析 pull解析方式 sax解析方式 JSON 数据格式解析 解析代码很简单,但是还要有APP类,...

  • 省市区县级联选择

    类似京东的省市区县级联选择的小控件代码比较多,直接上效果图 实现很简单,就是省市区县的数据量太大了,再次感觉到我中...

  • 【Python爬虫】-爬出原理

    简单叙述爬虫原理请求数据解析数据获取数据

  • EasyPoi 使用总结

    导出多级合并数据(省市区)

  • 我与编程21

    目前,我对爬虫的程序有了大致的了解:获取数据-解析数据-(提取数据)。 获取数据相对简单些,但是解析数据环节有点难...

  • 【Android】聊天机器人*第二课

    1、json数据解析 解析数据,就需要写一个解析函数,这里就简单的写在mainActivity中: 因为我们可以看...

网友评论

      本文标题:【Objective-C】简单的省市区的数据解析

      本文链接:https://www.haomeiwen.com/subject/rkvnlttx.html