关于OC-省市区习题
对于省市区的问题,关键在于搞清楚数组嵌套字典,字典里面装数组的多重嵌套关系,沉下心来,捋清楚思路,
实在看不懂就多打几遍,这道题理解了,熟练了对之后学习很有好处。
代码如下:
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);
}
}
}
关于OC-省市区习题的更多相关文章
- OC:习题来自平时搜索
== 第一部分 == 类变量的@protected ,@private,@public,@package,声明各有什么含义?写一个标准宏MIN,这个宏输入两个参数并返回较小的一个?面向对象的三大特征 ...
- 二.OC基础--1,对象的存储细节,2,#pragma mark指令,3,函数和对象方法的区别,4,对象和方法之间的关系 ,5.课堂习题
1,对象的存储细节, 1. 当创建一个对象的时候:Person *p1 = [Person new],做了三件事情: 1,申请堆内存空间: 2,给实例变量初始化: 3,返回所申请空间的首地址; 2. ...
- OC Foundation框架—字符串操作方法及习题
#import <Foundation/Foundation.h> int main(int argc, const char * argv[]) { @autoreleasepool { ...
- OC中的面向对象语法3
一. set方法和get方法 1. set方法和get方法的使用场合 @public的成员可以被随意赋值,应该使用set方法和get方法来管理成员的访问(类似机场的安检.水龙头过滤,过滤掉不合理的东西 ...
- OC中面向对象2
一. 定义OC的类和创建OC的对象 接下来就在OC中模拟现实生活中的情况,创建一辆车出来.首先要有一个车子类,然后再利用车子类创建车子对象 要描述OC中的类稍微麻烦一点,分2大步骤:类的声明.类的实现 ...
- OC语言的面向对象—类和对象、方法
1. 面向对象和面向过程思想 OC是面向对象的,C是面向过程的.面向对象和面向过程只是解决问题的两种不同思想 1. 面向对象和面向过程的区别 1) 以用电脑听歌为例子 a) 面向过程 ➢ 打开电脑 ➢ ...
- iOS头条新闻App、自动布局、省市区联动、登录按钮动画、Alert弹框效果等源码
iOS精选源码 LEEAlert -- 优雅的Alert ActionSheet 登录按钮 省市区三级联动 JHViewCorner - 一行代码搞定圆角 JHFrameLayout - 一行代码实现 ...
- iOS代码规范(OC和Swift)
下面说下iOS的代码规范问题,如果大家觉得还不错,可以直接用到项目中,有不同意见 可以在下面讨论下. 相信很多人工作中最烦的就是代码不规范,命名不规范,曾经见过一个VC里有3个按钮被命名为button ...
- 用C语言封装OC对象(耐心阅读,非常重要)
用C语言封装OC对象(耐心阅读,非常重要) 本文的主要内容来自这里 前言 做iOS开发的朋友,对OC肯定非常了解,那么大家有没有想过OC中NSInteger,NSObject,NSString这些对象 ...
- 嵌入式&iOS:回调函数(C)与block(OC)传 参/函数 对比
C的回调函数: callBack.h 1).声明一个doSomeThingCount函数,参数为一个(无返回值,1个int参数的)函数. void DSTCount(void(*CallBack)(i ...
随机推荐
- java中的IO流读取文件
1 InputStream类和OutputStream类 InputStream.read()方法从文件中读取一个字节(0-255),然后将此字节转换成对应的整数返回.假设一个文件的编码为utf-8编 ...
- 如何在jQuery中使用 setInterval,setTimeout
当遇到setInterval,setTimeout与jquery混用的问题 时,直接按JavaScript中的语法写并不起作用,有以下两种解决方法. 方法1. 直接在ready中调用其他方法,会提示缺 ...
- Ubunu下安装mongoDB
mongoDB有两种安装模式: 1. 源码安装 wget http://fastdl.mongodb.org/linux/mongodb-linux-x86_64-2.2.0.tgz tar zxvf ...
- 2015年网易考拉海淘android面试
经朋友推荐,昨天下午去网易杭州公司参加了考拉海淘android客户端的面试.今天回忆一下面试题目,做个整理进行备案. 1.说说JVM垃圾回收机制. 1.1.画了JVM分代回收的图,大致说了下垃圾分代回 ...
- html 标记语言
HTML html标记语言 网页 <html></html> 可见页面内容 <body> ...
- Unix/Linux环境C编程入门教程(35) 编程管理系统中的组
组管理相关函数介绍 相关函数 getgid,setgid,setregid 表头文件 #include<unistd.h> #include<sys/types.h> 定 ...
- Structs2中Action返回json到前台方法
1.传统方式JSON输出 这一点跟传统的Servlet的处理方式基本上一模一样,代码如下 01 public void doAction() throws IOException{ 02 ...
- UVA 10152-ShellSort(映射+栈)
题意: 给出一堆乌龟名字,乌龟能从本身位置爬到顶端. 要求求出从原本的顺序到目标顺序的最小操作.输出每次操作移到顶端的乌龟的名字. 解析:名字用映射对应编号,把目标状态的乌龟从上到下的编号按1到N编好 ...
- android 分享到新浪微博
分享到新浪微博,折腾了大半个月,现在终于弄出来了,心里的那个爽呀,太痛快了,哈哈!! 废话少说,首先是认证, 1.进入新浪微博提供的开放平台注册新浪账号. 2.点击’我是开发者‘,创建一个应用,得到C ...
- 【转】C++实现RTMP协议发送H.264编码及AAC编码的音视频
RTMP(Real Time Messaging Protocol)是专门用来传输音视频数据的流媒体协议,最初由Macromedia 公司创建,后来归Adobe公司所有,是一种私有协议,主要用来联系F ...