美文网首页
【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】简单的省市区的数据解析

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