//
// main.m
// OC05_省市区字典
//
// Created by dlios on 15-5-13.
// Copyright (c) 2015年 king. All rights reserved.
//
#import <Foundation/Foundation.h>
int main(int argc, const char * argv[]) {
//路径
NSString *path = @"/Users/dlios/Desktop/OC/OC05_省市区字典/OC05_省市区字典/area.txt"; //txt文件存放的位置
//把路径对应的文件内容导入变成一个字符串
NSString *str = [NSString stringWithContentsOfFile:path encoding:NSUTF8StringEncoding error:nil];
//把字符串进行截取成数组
NSArray *strArr = [str componentsSeparatedByString:@"\n"];
//创建一个省数组
NSMutableArray *provinceArr = [NSMutableArray array];
for (NSString *temp in strArr) {
//判断是不是省名
if (![temp hasPrefix:@" "]) {
//创建一个省字典
NSMutableDictionary *proDic = [NSMutableDictionary dictionary];
//第一对key - value, 省名
[proDic setObject:temp forKey:@"proName"];
//创建一个市数组
NSMutableArray *cityArr = [NSMutableArray array];
//第二对 key - value , 市列表
[proDic setObject:cityArr forKey:@"cityArr"];
//把省字典放到省数组中
[provinceArr addObject:proDic];
// NSMutableArray *cityArr = [NSMutableArray array];
//
// NSMutableDictionary *proDic = [NSMutableDictionary dictionaryWithObjectsAndKeys:temp, @"proName", cityArr, @"cityArr", nil];
//
// [provinceArr addObject:proDic]; //if里的代码可以也可以这样写,本人觉得这样写会对省市区整个结构了解的比较快
}else if([temp hasPrefix:@" "] && ![temp hasPrefix:@" "]){
//创建一个市字典
NSMutableDictionary *cityDic = [NSMutableDictionary dictionary];
//市字典的第一对 key - value
[cityDic setObject:temp forKey:@"cityName"];
//创建了一个区数组
NSMutableArray *zoneArr = [NSMutableArray array];
//市字典的第二对 key - value
[cityDic setObject:zoneArr forKey:@"zoneArr"];
//找到市所对应的省
NSMutableDictionary *proDic = [provinceArr lastObject];
//找省字典对应的市数组?
NSMutableArray *cityArr = [proDic objectForKey:@"cityArr"];
//把市字典,放入到市数组中
[cityArr addObject:cityDic];
// NSMutableArray *zoneArr = [NSMutableArray array];
//
// NSMutableDictionary *cityDic = [NSMutableDictionary dictionaryWithObjectsAndKeys:temp, @"cityName", zoneArr, @"zoneArr", nil];
//
// NSMutableDictionary *proDic = [provinceArr lastObject];
//
// NSMutableArray *cityArr = [proDic objectForKey:@"cityArr"];
//
// [cityArr addObject:cityDic]; //同上
}else if([temp hasPrefix:@" "]) {
NSMutableDictionary *proDic = [provinceArr lastObject];
//找市数组
NSArray *cityArr = [proDic objectForKey:@"cityArr"];
//找到对应的市字典
NSMutableDictionary *cityDic = [cityArr lastObject];
//找到对应的区数组
NSMutableArray *zoneArr = [cityDic objectForKey:@"zoneArr"];
//把区民加到区数组中
[zoneArr addObject:temp];
}
}
//进行遍历打印
for (NSMutableDictionary *proDic in provinceArr) {
NSLog(@"%@", [proDic objectForKey:@"proName"]);
NSMutableArray *cityArr = [proDic objectForKey:@"cityArr"];
for (NSMutableDictionary *cityDic in cityArr) {
NSLog(@"%@", [cityDic objectForKey:@"cityName"]);
NSMutableArray *zoneArr = [cityDic objectForKey:@"zoneArr"];
for (NSString *str in zoneArr) {
NSLog(@"%@", str);
}
}
}
//省数组---->省字典---->市数组---->市字典---->区数组
//每遇到一个省就创建一个省字典,省字典里存放省名和市数组
return 0;
}
每当遇到一个省都会创建一个省字典(包括省名,市数组(列表)),一个省接一个省的存储数据,当这个省的数据没有传完的时候,是不会往下一个省存储数据的,所有才有:
//找到市所对应的省
NSMutableDictionary *proDic = [provinceArr lastObject];
和
NSMutableDictionary *proDic = [provinceArr lastObject];
//找市数组
NSArray *cityArr = [proDic objectForKey:@"cityArr"];
//找到对应的市字典
NSMutableDictionary *cityDic = [cityArr lastObject];
所以每次对下一级存储数据时,上一级都是最后一个对象.
例:假设我们已经存储了北京天津等数据,现在我们要存储广东省数据时,我们必须先把广东里的市名都给存储完毕,才能进行下一个省的市名数据存储.(这里我们先撇开区不谈).
省市区txt文件,百度就能找到,如下内容北京 1
北京市 1
西城区 1
东城区 2
崇文区 3
宣武区 4
朝阳区 5
丰台区 6
石景山区 7
海淀区 8
门头沟区 9
房山区 10
通州区 11
顺义区 12
昌平区 13
大兴区 14
怀柔区 15
平谷区 16
密云区 17
延庆区 18
天津 2
天津市 2
和平区 19
河东区 20