我们要实现的效果
实现框架图
这是我们的实现代码
NSString *path = @"/Users/dllo/Desktop/省区市/省区市/area.txt"; //文件路径
NSString *text = [NSString stringWithContentsOfFile:path encoding:NSUTF8StringEncoding error:nil]; //读取文本信息
NSArray *lineArray = [text componentsSeparatedByString:@"\n"]; //把读取的文本按换行分隔
NSMutableArray *country = [NSMutableArray array]; //创建一个大的可变数组,存生各个省份
NSString *province; //用来存放当前省份
NSString *city; //用来存放当前城市
for (NSString *line in lineArray) { //遍历分隔好的数组lineArray
if (![line hasPrefix:@" "]) { //如果每行(line)开头不是空格,那么就是一个省份
NSMutableDictionary *dic = [NSMutableDictionary dictionary]; //建一个字典,存放省名和市数组
NSMutableArray *arr = [NSMutableArray array];
[dic setObject:arr forKey:line];
[country addObject:dic];
province = line; //存放当前当前省份,以便下面使用
}else if (![line hasPrefix:@" "]) { //有上面的判断,肯定不是省,那么只需要判断不是区就可以
NSMutableDictionary *dic = [NSMutableDictionary dictionary]; //建一个字典,存放市名和区数组
NSMutableArray *arr = [NSMutableArray array];
[dic setObject:arr forKey:line];
[[[country lastObject] objectForKey:province] addObject:dic];
city = line; //用来存放当前市,以便下面使用
}else {
[[[[[country lastObject] objectForKey:province] lastObject] objectForKey:city] addObject:line];
}
}
for (NSMutableDictionary *provinceName in country) {
for (NSString *provinces in provinceName) {
NSLog(@"%@", provinces);
for (NSMutableDictionary *cityName in [provinceName objectForKey:provinces]) {
for (NSString *citys in cityName) {
NSLog(@"%@", citys);
for (NSString *zone in [cityName objectForKey:citys]) {
NSLog(@"%@", zone);
}
}
}
}
}
上面这个代码的输出有好几种写法。。。这只是其中的一种