我是靠谱客的博主 玩命画板,这篇文章主要介绍#Objective-C 之 省市区 (数组-字典-数组-字典-数组)通过字典与数组制作省市区排序,现在分享给大家,希望可以做个参考。

通过字典与数组制作省市区排序

首先我们先要获得一个省市区的TXT文档:


接下来我们需要将省市区的TXT文件拖入至我们已经创建好的XCODE中:


最后我们需要将拖入进xcode的文件在AppDeleGate中读取出来(获取文件路径)

复制代码
1
2
3
4
5
6
7
//导入 NSString *path = @"/Users/lan/Desktop/OC/shengshiqu/shengshiqu/area.txt"; //转码 NSString * pathString = [NSString stringWithContentsOfFile:path encoding:NSUTF8StringEncoding error:nil]; //输出 NSLog(@"%@",pathString);
注意文件导入时:

可将左侧栏的area.txt直接拖入NSString * path = @”“;中


完成了准备工作后,我们准备进入正题,编写省市区排序的代码

第一步当然是理清思路.欲打代码,必先思通;清晰的思路和缜密的逻辑,是迈向成功的第一步!

  • 首先 , 我们需要创建一个省数组,包含所有的省份
  • 其次 , 在省之后包含有市,我们应该创建一个省字典 , 归属于省数组 , 包含有省得名字以及市的数组.
  • 再者 , 同理可得我们需要创建一个市字典 , 归属于市数组 , 同时包含有市的名字以及区的数组
  • 最后 , 我们我们只需要将每个市与区归类至它们应属于的省市之中即可;

我们需要对所获取的文件先进行一个处理,将导入的数据先切割成为数组

复制代码
1
2
3
//切割字符串 NSArray * strArr = [pathString componentsSeparatedByString:@"n"];

正式开始O(∩_∩)O~

复制代码
1
2
3
//创建省数组 NSMutableArray * proArr = [NSMutableArray array];

利用第一个for..in..遍历输入,判别每一个名称**

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
for (NSString * temp in strArr) { if (![temp hasPrefix:@" "]) { //判别是否为省名 //创建一个可变的省字典 NSMutableDictionary * proDic = [NSMutableDictionary dictionary]; //给省字典添加键值对 //第一对:省名 [proDic setValue:temp forKey:@"proName"]; //第二对:市数组 NSMutableArray * cityArr = [NSMutableArray array]; [proDic setValue:cityArr forKey:@"cityArr"]; //将省字典放入省数组 [proArr addObject:proDic]; //part1:首先创建了一个省字典,在省字典中添加名称以及创建市数组,并将省字典放入省数组中,将市数组放入省字典中! else if ([temp hasPrefix:@" "] && ![temp hasPrefix:@" "]) //判断是否为市名 { //创建一个可变的市字典 NSMutableDictionary * cityDic = [NSMutableDictionary dictionary]; //给市字典添加键值对 //第一对:市名 [cityDic setValue:temp forKey:@"cityName"]; //第二对:区数组 NSMutableArray * zoneArr = [NSMutableArray array]; [cityDic setValue:zoneArr forKey:@"zoneArr"]; //找到对应位置添加到市数组 //首先要找到对应的省字典 NSMutableDictionary * prodic = [proArr lastObject]; //在找到对应市数组 NSMutableArray * cityArr = prodic[@"cityArr"]; //将市字典放入市数组 [cityArr addObject:cityDic]; } //part2:在市数组中创建市字典,并在市字典中添加市名字以及创建区数组,并找出市字典对应的市数组(先找到所在省字典的元素,再找对应的市数组),并放入; else { //创建一个可变的区字典 NSMutableDictionary * zoneDic = [NSMutableDictionary dictionary]; //给区字典添加键值对 //区名 [zoneDic setValue:temp forKey:@"zoneName"]; //找到对应的位置添加到区数组 //首先要找到对应的省字典 NSMutableDictionary * proDic = [proArr lastObject]; //在找到对应的市数组 NSMutableArray * cityArr = proDic[@"cityArr"]; //在找到对应的市字典 NSMutableDictionary * cityDic = [cityArr lastObject]; //再找到对应的区数组 NSMutableArray * zoneArr = cityDic[@"zoneArr"]; //将区字典添加到区数组中 [zoneArr addObject:temp]; } } //part3:创建区字典,由于区已是最小单位,因此无需再在字典中定义数组,找出区字典所在对应的省字典,市数组,市字典,区数组.并将区字典添加到对应的区数组中.

以上 , 我们已经完成了所有分类排序工作.


故事的最后,让我们用最后一曲for..in..祭奠我们被数组字典折磨的时光™

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
//for..in..遍历打印 for(NSMutableDictionary * proDic in proArr) { NSLog(@"%@",proDic[@"proName"]); NSMutableArray * cityArr = proDic[@"cityArr"]; for(NSMutableDictionary * cityDic in cityArr) { NSLog(@"%@",cityDic[@"cityName"]); NSMutableArray * zoneArr = cityDic[@"zoneArr"]; for (NSString * zoneName in zoneArr) { NSLog(@"%@",zoneName); } } NSLog(@"n"); } //part4:通过遍历将TXT文档中省市区循环打印;

如果宝宝有什么没有表达清楚或者没有写明白的地方,请留言给宝宝,宝宝看见会不留余力回复的^_^

最后

以上就是玩命画板最近收集整理的关于#Objective-C 之 省市区 (数组-字典-数组-字典-数组)通过字典与数组制作省市区排序的全部内容,更多相关#Objective-C内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(67)

评论列表共有 0 条评论

立即
投稿
返回
顶部