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

概述

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

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


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


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

//导入
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 = @”“;中


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

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

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

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

//切割字符串
NSArray * strArr = [pathString componentsSeparatedByString:@"n"];

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


//创建省数组
NSMutableArray * proArr = [NSMutableArray array];

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


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..祭奠我们被数组字典折磨的时光™

//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 之 省市区 (数组-字典-数组-字典-数组)通过字典与数组制作省市区排序所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

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

评论列表共有 0 条评论

立即
投稿
返回
顶部