对于省市区的问题,关键在于搞清楚数组嵌套字典,字典里面装数组的多重嵌套关系,沉下心来,捋清楚思路,

实在看不懂就多打几遍,这道题理解了,熟练了对之后学习很有好处。

代码如下:

NSString *path = @"/Users/lan/Desktop/省市区/省市区/area.txt";    //导入省市区文本的路径

NSString *pathStr = [NSString stringWithContentsOfFile:path encoding:NSUTF8StringEncoding error:nil];    //通过UTF8转码,将省市区装入到字符串中

 NSArray *array = [pathStr componentsSeparatedByString:@"\n"];      //根据回车符号“\n”,将字符串切割成数组

NSMutableArray *arrayProvince = [NSMutableArray arrayWithCapacity:0];  //创建初始化一个可变数组

 for (NSString *str in array) {  //遍历数组

if (![str hasPrefix:@" "]) {     //判断非空格字符,找出省(由于省的名字前没有空格)

//每找到一个省的名字,创建一个字典

NSMutableDictionary *proDic = [NSMutableDictionary dictionaryWithCapacity:0];

//将省的名字放入字典当中,并设置key为ProName

[proDic setObject:str forKey:@"ProName"];

//创建市的数组,存放市区的字典

NSMutableArray *cityArray = [NSMutableArray arrayWithCapacity:0];

//将数组存入省的字典中

[proDic setObject:cityArray forKey:@"cityArray"];

//将省字典放入省的字典中

[arrayProvince addObject:proDic];

}

//找到市的名字

else if ([str hasPrefix:@"  "] && ![str hasPrefix:@"    "]){

//找到隶属的省的字典

NSDictionary *proDic = [arrayProvince lastObject];

//将省字典中预留的市的数组找出来

NSMutableArray *cityarr = [proDic objectForKey:@"cityArray"];

//创建市的字典

NSMutableDictionary *cityDic = [NSMutableDictionary dictionaryWithCapacity:0];

//把市的名字写入到市的字典中

[cityDic setObject:str forKey:@"cityName"];

//创建区的数组,用来存放找到的区的名字

NSMutableArray *zoneArray = [NSMutableArray arrayWithCapacity:0];

//把区的数组,放入到市的字典中

[cityDic setObject:zoneArray forKey:@"zoneArray"];

//把市的字典放入到市的数组中

[cityarr addObject:cityDic];

}

else{

//找到隶属的省的字典

NSDictionary *proDic = [arrayProvince lastObject];

//将省字典中预留的市的数组找出来

NSMutableArray *cityarr = [proDic objectForKey:@"cityArray"];

//将市数组中的市的字典找到

NSDictionary *citDic = [cityarr lastObject];

//将市字典中的区的数组找到

NSMutableArray *zoneArray = [citDic objectForKey:@"zoneArray"];

[zoneArray addObject:str];

}

for (NSMutableDictionary *dic1 in arrayProvince) {    //遍历打印

NSLog(@"%@",[dic1 objectForKey:@"ProName"]);

for (NSMutableDictionary *dic2 in [dic1 objectForKey:@"cityArray"]) {

NSLog(@"%@",[dic2 objectForKey:@"cityName"]);

for (NSString *str in [dic2 objectForKey:@"zoneArray"]) {

NSLog(@"%@",str);

}

}

}

转载于:https://www.cnblogs.com/LE-Quan/p/5083725.html

关于OC-省市区习题相关推荐

  1. OC面向对象的三大特征(封装 继承 多态)习题2 复合

    复合:一个类中有一个成员变量是另外一个类的对象. 比如我现在要制作一台电脑,电脑需要CPU,显示器,鼠标和键盘等.这些东西的研发都是很复杂的过程.如果现在有成型的CPU等组件,就可以直接用这些组件攒一 ...

  2. OC中用字典创建一个具有省市区的应用(简单的字典运用代码)

    </pre><pre name="code" class="objc">#import <Foundation/Foundatio ...

  3. matlab oj,Matlab习题(1)

    <Matlab习题(1)>由会员分享,可在线阅读,更多相关<Matlab习题(1)(46页珍藏版)>请在人人文库网上搜索. 1.习题 l1 执行下列指令, 观 察其运算 结果, ...

  4. 华师大计算机在线作业,华东师范大学计算机考研复试机试习题

    华东师范大学计算机考研复试机试习题 华东师范大学计算机考研:计算机系.数据学院复试机试历年真题以及AC代码.历年学长总结得到.适用学院:计算机学院.数据学院.软件学院也可参考.sum/=10;prin ...

  5. 视觉SLAM十四讲CH3代码解析及课后习题详解

    eigenMatrix.cpp #include <iostream>using namespace std;#include <ctime> // Eigen 核心部分 #i ...

  6. c语言里编译错误c131,C语言习题选择题.doc

    <C语言习题选择题.doc>由会员分享,可在线阅读,更多相关<C语言习题选择题.doc(36页珍藏版)>请在装配图网上搜索. 1.答案试题C1.在C语言源程序中,以下叙述正确的 ...

  7. Python数据分析习题(基于pandasnumpy模块)(上)

    练习题目录 习题编号 内容 相应数据集 练习1 - 开始了解你的数据 探索Chipotle快餐数据 chipotle.tsv 练习2 - 数据过滤与排序 探索2012欧洲杯数据 Euro2012_st ...

  8. 【本科课程】数电复习题

    数电复习题 复习提纲 参考题 标题 : 数电复习题 起源: 先丢个复习题出来 有空再来填坑 - 更新次数: 1 最近更新时间 : 2021 6 19 首次更新时间: 更新内容: 下次更新: 复习提纲 ...

  9. 高等数学(第七版)同济大学 习题8-2 个人解答

    高等数学(第七版)同济大学 习题8-2 1.设a=3i−j−2k,b=i+2j−k,求(1)a⋅b及a×b:(2)(−2a)⋅3b及a×2b:(3)a.b的夹角的余弦.\begin{aligned}& ...

  10. 金属学与热处理(第二版)课后习题答案+复习提纲

    第一章 1.作图表示出立方晶系(1 2 3).(0 -1 -2).(4 2 1)等晶面和[-1 0 2].[-2 1 1].[3 4 6] 等晶向 ​ 编辑切换为居中 添加图片注释,不超过 140 字 ...

最新文章

  1. 查找linux所有目录中包含字符,Linux查找目录下包含有某字符串的全部文件
  2. 【Node】node的模块
  3. Visual Studio:error MSB8020
  4. pytorch学习笔记 1. pytorch基础 tensor运算
  5. virtualbox手动挂载共享文件夹
  6. spring 安全模块在jsp中误用引起的问题
  7. 1024. 科学计数法 (20)-PAT乙级真题
  8. like mybatis 用法_Mybaits中Like 的使用方式以及一些注意点
  9. Oracle ora-15070,查询字段过多触发了Oracle的BUG?【ORA-01465: 无效的十六进制数字】...
  10. 如何在Mac上备份和共享文本替换?
  11. EasyPusher直播推送中用到的缓冲区设计和丢帧原理
  12. cognos数据源配置修改oracle,Cognos 新建数据源报错(原创)
  13. 大数据技术 - MapReduce 作业的运行机制
  14. VP9编码(3)-- 符号
  15. java版溺尸刷怪塔_minecraft河流群系溺尸刷怪塔存档
  16. 如何培养对编程开发的兴趣
  17. toLua++使用(转)
  18. 三种循环的流程图画法总结 [转]
  19. 电路中滤波电容和退耦电容_怎么分清滤波电容、去耦电容、旁路电容
  20. ptable java_ttable怎么在java中编写

热门文章

  1. 线性汇编总结和函数说明
  2. avr-gcc中关于delay延时函数的应用修改版[ourdev]
  3. python打印菱形星号代码_Python打印“菱形”星号代码
  4. ios 检测是否联网_秋招|阿里 iOS 五轮面经分享,已收到阿里的意向书
  5. swiper怎么让不会回弹,为什么我的滚动条拉上拉下都会回弹呢?
  6. python打印所有花数_Python中使用while循环实现花式打印乘法表
  7. cpu开机就是60℃_铅锤哥:十五种电脑开机黑屏的原因与解决思路
  8. GPU Gems2 - 3 几何体实例化的内幕(Inside Geometry Instancing)
  9. hive币2021年预计涨到多少_比特币突破4万美元,比特币2021年会涨到多少?
  10. 利用matlab提取中心线