字典+数组的应用——省市区

我们要实现的效果

实现框架图



这是我们的实现代码


NSString *path = @"/Users/dllo/Desktop/省区市/省区市/area.txt";      //文件路径
        NSString *text = [NSString stringWithContentsOfFile:path encoding:NSUTF8StringEncoding error:nil];                                      //读取文本信息
        NSArray *lineArray = [text componentsSeparatedByString:@"\n"];           //把读取的文本按换行分隔
        NSMutableArray *country = [NSMutableArray array];                   //创建一个大的可变数组,存生各个省份
        
        NSString *province;                                 //用来存放当前省份
        NSString *city;                                     //用来存放当前城市
        
        for (NSString *line in lineArray) {                             //遍历分隔好的数组lineArray
            if (![line hasPrefix:@" "]) {                           //如果每行(line)开头不是空格,那么就是一个省份
                NSMutableDictionary *dic = [NSMutableDictionary dictionary];       //建一个字典,存放省名和市数组
                NSMutableArray *arr = [NSMutableArray array];
                [dic setObject:arr forKey:line];
                [country addObject:dic];
                province = line;                                            //存放当前当前省份,以便下面使用
            }else if (![line hasPrefix:@"   "]) {                   //有上面的判断,肯定不是省,那么只需要判断不是区就可以
                NSMutableDictionary *dic = [NSMutableDictionary dictionary];        //建一个字典,存放市名和区数组
                NSMutableArray *arr = [NSMutableArray array];
                [dic setObject:arr forKey:line];
                [[[country lastObject] objectForKey:province] addObject:dic];
                city = line;                                                //用来存放当前市,以便下面使用
            }else {
                [[[[[country lastObject] objectForKey:province] lastObject] objectForKey:city] addObject:line];
            }
        }
        for (NSMutableDictionary *provinceName in country) {
            for (NSString *provinces in provinceName) {
                NSLog(@"%@", provinces);
                for (NSMutableDictionary *cityName in [provinceName objectForKey:provinces]) {
                    for (NSString *citys in cityName) {
                        NSLog(@"%@", citys);
                        for (NSString *zone in [cityName objectForKey:citys]) {
                            NSLog(@"%@", zone);
                        }
                    }
                }
            }
        }

上面这个代码的输出有好几种写法。。。这只是其中的一种


评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值