//整体原理思路:
//一个大数组,包含省字典
//省字典包含 省名字,下属市数组
//市数组包含市字典
//市字典包含 市名字,下属区数组
//一个大数组,包含省字典
//省字典包含 省名字,下属市数组
//市数组包含市字典
//市字典包含 市名字,下属区数组
//数组=》字典=》数组=》字典=》数组
//导入TXT文件
NSString * path = @"/Users/dllo/Desktop/DSL150512-04/OC/6.18 练习 省市区 字典封装/6.18 练习 省市区 字典封装/area.txt";
//转化成NSString格式
NSString * area = [NSString stringWithContentsOfFile:path encoding:NSUTF8StringEncoding error:nil];
//按“\n”即按行拆分,并装入areaArray数组
NSArray * areaArray = [area componentsSeparatedByString:@"\n"];
//创建一个大数组 mutableArray 装 "省" 字典
NSMutableArray * mutableArray = [NSMutableArray array];
for (NSString * str in areaArray) {
if (![str hasPrefix:@" "]) {
//只要找到"省"名,就创建字典 provinceDic
NSMutableDictionary * provinceDic = [NSMutableDictionary dictionary];
//将省名存入 "省" 字典中 赋予Key标签为"name"
[provinceDic setValue:str forKey:@"name"];
//将 "省" 字典存入大数组 mutableArray
[mutableArray addObject:provinceDic];
// 预备使用内容,本if里不起作用
//创建一个 市 数组cityArray(预备使用,本if里不起作用)
NSMutableArray * cityArray = [NSMutableArray array];
//将市数组cityArray 存入 "省" 字典provinceDic,赋予Key标签为 “cityArray”;(预备使用,本if里不起作用)
[provinceDic setValue:cityArray forKey:@"cityArray"];
//*******此时省字典provinceDic包含(省名str+市数组cityArray)***********
}
if ([str hasPrefix:@" "] && ![str hasPrefix:@" "]) {
//确定上一循环的 "省" 名 proDic
NSMutableDictionary * proDic = [mutableArray lastObject];
//通过Key标签 “cityArray” 提取 "省" 字典proDic 中的市数组cityArray
NSMutableArray * cityArray = [proDic objectForKey:@"cityArray"];
//创建 "市" 字典cityDic
NSMutableDictionary * cityDic = [NSMutableDictionary dictionary];
//将市名str存入 “市” 字典中,赋予Key标签为 "cityName"
[cityDic setValue:str forKey:@"cityName"];
//将 “市” 字典的存入 市数组cityArray中
[cityArray addObject:cityDic];
// 预备使用内容,本if里不起作用
//创建 区 数组areaArray (预备使用,本if里不起作用)
NSMutableArray * areaArray = [NSMutableArray array];
//将 区 数组 areaArray 装入“市”字典cityDic,并赋予Key标签为"areaArray"(预备使用,本if里不起作用)
[cityDic setValue:areaArray forKey:@"areaArray"];
//***********此时市字典cityDic包含(市名str+区数组areaArray)************
}
if ([str hasPrefix:@" "]) {
//取出大数组 mutableArray 上一循环省字典proDic(省名+市数组cityArray)
NSMutableDictionary * proDic = [mutableArray lastObject];
//通过Key标签 "cityArray" 提取上一循环 省字典proDic(省名+市数组cityArray) 中的市数组cityArray
NSMutableArray * cityArray = [proDic objectForKey:@"cityArray"];
//通过 市数组cityArray 提取上一循环的市字典(市名+区数组areaArray)cityDic
NSMutableDictionary * cityDic = [cityArray lastObject];
//通过Key标签“areaArray”取出 市字典cityDic(市名+区数组areaArray) 中的 区数组areaArray
NSMutableArray * areaArray = [cityDic objectForKey:@"areaArray"];
//将区名 str 存入区数组areaArray中
[areaArray addObject:str];
}
}
//循环打印
for (NSDictionary * dic in mutableArray) {
NSLog(@"%@",[dic objectForKey:@"name"]);
for (NSDictionary * cityDic in [dic objectForKey:@"cityArray"]) {
NSLog(@"%@",[cityDic objectForKey:@"cityName"]);
for (NSString * str in [cityDic objectForKey:@"areaArray"]) {
NSLog(@"%@",str);
}
}
}