objective-c 省市区练习(数组与字典的嵌套)

这篇博客主要介绍了如何使用Objective-C处理省市区数据,通过数组和字典的嵌套来组织数据。博主详细解释了数据结构的构建过程,从省到市再到区,每个层级如何创建字典和数组,并提供了输出数据的遍历方法。对于理解Objective-C中字典和数组的使用,以及处理嵌套数据结构有一定帮助。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

啥也别说了直接上代码:

 //找文件位置 有两种方法
    NSString *path = @"/Users/lan/Desktop/OC语言/Wzh_OC_07_省市区练习/Wzh_OC_07_省市区练习/area.txt";
//    NSString *path1 = [[NSBundle mainBundle]pathForResource:@"area" ofType:@"txt"];
    //找文件位置 有两种方法
    NSString *pathString = [NSString stringWithContentsOfFile:path encoding:NSUTF8StringEncoding error:nil];
    //字符串进分割
    NSArray *array = [pathString componentsSeparatedByString:@"\n"];

    //创建一个省的数组
    NSMutableArray *proArr = [NSMutableArray array];
    //快速便利
    for (NSString *str in array) {
        //判断非空格字符,找出省
        if (![str hasPrefix:@" "]) {
            //每找到一个省的名字,创建一个省字典
            NSMutableDictionary *proDic = [NSMutableDictionary dictionary];
            //将便利的省名放到字典中,并设置key为proName
            [proDic setValue:str forKey:@"proName"];
            //创建一个市的数组 作为存下属市用
            NSMutableArray *cityArr = [NSMutableArray array];
            //将市的数组放到省得字典里面 这里市是没有值的  设置key为市数组
            [proDic setObject:cityArr forKey:@"市数组"];
            //将省字典组放到省的数组中
            [proArr addObject:proDic];

            //判断是否已两个空格和不是四个空格的字符串
        }else if ([str hasPrefix:@"  "] && ![str hasPrefix:@"    "])     {
            //取出省数组里的省的最后一个元素,代表市所隶属的省字典 判断是从上往下的
            NSMutableDictionary *proDic = [proArr lastObject];
            //从省得字典里预留的数组取出
            NSMutableArray *cityArr = [proDic objectForKey:@"市数组"];
            //每找到一个市,创建一个市字典
            NSMutableDictionary *cityDic = [NSMutableDictionary dictionary];
            //将便利的东西放到市字典里
            [cityDic setObject:str forKey:@"cityName"];
            //为下属区域创建个数组作为预留
            NSMutableArray *areArr = [NSMutableArray array];
            //将区的数组放到市的字典里
            [cityDic setObject:areArr forKey:@"区数组"];
            //将市的字典放到市的数组里
            [cityArr addObject:cityDic];

        }else{
            //从省的数组里面取出最后一个元素的省得字典
            NSMutableDictionary *proDic = [proArr lastObject];
            //从省得字典里面取出市的数组
            NSMutableArray *cityArr = [proDic objectForKey:@"市数组"];
            //从市的数组里面取出最后一个元素市的字典
            NSMutableDictionary *cityDic = [cityArr lastObject];
            //从市的字典取出区的数组
            NSMutableArray *areArr = [cityDic objectForKey:@"区数组"];
            //将剩下便利的区名放到区的数组里
            [areArr addObject:str];
        }
    }

    //便利出省的名字
    for (NSMutableDictionary *proDic in proArr) {
        NSLog(@"%@",[proDic objectForKey:@"proName"]);
        //找出那个省的市的数组
        NSMutableArray *cityArr = [proDic objectForKey:@"市数组"];
        for (NSMutableDictionary *cityDic in cityArr) {
            NSLog(@"%@",[cityDic objectForKey:@"cityName"]);
            //找出那个市字典里的区数组
            NSMutableArray *areArr = [cityDic objectForKey:@"区数组"];
            for (NSString *are in areArr) {
                NSLog(@"%@",are);
            }
        }
    }

思路理解:
首先先理解省市区要怎么封装 首先txt的格式是没有空格的是省名,两个空格的是市名,四个空格的是区县名
这里写图片描述
大体构造是 省数组( 省字典( 省名字 ,市数组 (市字典( 市名字 , 区数组 ) ) ) , 省字典( 省名字 ,市数组 (市字典( 市名字 , 区数组 ) ) ) , 省字典( 省名字 ,市数组 (市字典( 市名字 , 区数组 ) ) ) …….. )
首先创建一个省数组 当 每将判断完的省名 就创建一个字典,里面存着省名, 并且构架好一个市的数组存进字典中
然后 再进行判断判断为两个空格的(市名) , 如果是的话 创建一个一个字典,将判断的市名放进字典中,并且构造好区的数组存进字典中, 再把刚刚存在省里面的最后一个省字典拿出来(因为判断是从上往下的 到别的省的市,它最后一个元素也就变成对应的省了 ,下面区同理),然后拿出省字典里面预留的市的数组,将你创建的字典放进去;
最后 判断是不是有四个空格的(区县),然后从省的数组里面找出最后一个元素(省字典) , 然后从省字典里面找出市数组,再从市数组里面找出最后一个元素(市字典),再从市字典里面找出区数组,并把判断的数据给它;

输出同理 便利的时候先将省数组里面的省字典找出来 ,并且将省字典里的名字输出出来 ,然后再从省字典里面找出市的数组,然后将市数组里面的市字典里面的市名输出出来 ,最后将市字典里的区县输出出来

讲得有点乱,请各位亲们理解,有什么我讲得不对或者混乱的请留言和我说下,不甚感激!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值