我觉得字典问题有点类似于嵌套的问题,在解决问题前可以将相互之间的关系写出来再进行编写,这样会使思路更加清晰.在打印的时候就相当于剥皮,从外层开始一层层进行.
//先将txt文件的路径添加到工程中
NSString *path =@"/Users/dlios/Desktop/.....";
//根据路径产生相应的字符串
NSString *str =[NSString stringWithContentsOfFile:path encoding:NSUTF8StringEncoding error:nil];
//对字符串进行逐行切割
NSArray *strArr = [str componentsSeparatedByString:@"\n"];
//创建一个省数组
NSMutableArray *proArr = [NSMutableArray array];
//遍历字符串数组
for (NSString *temp in strArr){
if ( ! [temp hasPrefix:@" "]){
//创建一个省的字典去存放省名
NSMutableDictionary *proDic = [NSMutableDictionary dictionary];
//想将省名放进去 就得通过创建键值对的方式存放
//省名的键值对的创建
[proDic setObject:temp forKey:@"proName"];
//因为省之下有市,所以也得在省的字典中创建市数组取存放该省的各个市名
NSMutableArray *cityArr = [NSMutableArray array];
//将市数组添加到省字典中作为第二对键值.
[proDic setObject:cityArr forKey:@"cityArr"];
//因为这些都是属于省数组的,所以得把省字典放到省数组中
[proArr addObject:proDic];
}else if ( [temp hasPrefix:@" "]&& ![temp hasPrefix:@" "]){
//同找到省名一样,得创建一个市名的字典区存放市名
NSMutableDictionary *cityDic = [NSMutableDictionary dictionary];
//将市名作为键值对放进字典
[cityDic setObject:temp forKey:@"cityName"];
//同省字典一样 我也得创建区数组取存放区的内容
NSMutableArray *zoneArr = [NSMutableArray array];
[cityDic setObject:zoneArr forKey:@"zoneArr"];
//创建完成后需要将市字典找到存放的位置
//先找到对应的省字典位置
NSMutableDictionary *proDic =[proArr lastObject];
//再找到对应市数组
NSMutableArray *cityArr = proDic [@"cityArr"];
//将市字典放到是数组中
[cityArr addObject:cityDic];
}else{
//先找到省字典
NSMutableDictionary *proDic = [proArr lastObject];
//市数组
NSMutableArray *cityArr = proDic[@"cityArr"];
//市字典
NSMutableDictionary *cityDic = [cityArr lastObject];
//区数组
NSMutableArray *zoneArr = cityDic[@"zoneArr"];
//添加区名
[zoneArr addObject:temp];
}
}
for( NSMutableDictionary *dic in proArr){
NSLog(@"%@",dic[@"proName"]);
NSMutableArray * cityArr = dic[@"cityArr"];
for (NSMutableDictionary *cityDic in cityArr){
NSLog(@"%@",cityDic[@"cityName"]);
NSMutableArray *zoneArr = cityDic[@"zoneArr"];
for(NSString *zone in zoneArr){
NSLog(@"%@",zone);
}
}
}