相信很多同学在学习iOS时候都会遇到省市区字典的封装的问题,也遇到了各种各样的问题。今天抽空给大家写了一下,给了自己的注释。
#import <Foundation/Foundation.h>
int main(int argc, const char * argv[]) {
//一个大数组包含省字典
//省字典包含 省名字 下属市数组
//市数组包含市字典
//市字典包含市名字,下属区数组
// 数组-> 字典->数组->字典->数组
NSString * path= @"/Users/liuanguo/Desktop/oc/Dictionary/Dictionary/area.txt";
NSString * area=[NSString stringWithContentsOfFile:path encoding:NSUTF8StringEncoding error:nil];
NSArray * array=[area componentsSeparatedByString:@"\n"];
NSMutableArray * mutableArray =[[NSMutableArray alloc]init];
for (NSString * str in array) {
if ( ![str hasPrefix:@" "]) {
//只要找到声名,就创建一个字典
NSMutableDictionary * provinceDic =[[NSMutableDictionary alloc]init];
//省名存入省字典
[provinceDic setValue:str forKey:@"name"];
//创建一个数组,保存市字典
NSMutableArray * cityArray=[[NSMutableArray alloc]init];
//将数组存入字典,用来保存下属市的字典
[provinceDic setValue:cityArray forKey:@"cityArray"];
//将省字典存入大数组
[mutableArray addObject:provinceDic];
}
if ([str hasPrefix:@" "] && ![str hasPrefix:@" "]) {
//每找到一个市,将大数组最后一个省字典找出
NSMutableDictionary * proDic = [mutableArray lastObject];
//找出省字典中的数组
NSMutableArray * proArray =[proDic objectForKey:@"cityArray"];
//创建市字典
NSMutableDictionary * cityDic =[NSMutableDictionary dictionary];
[cityDic setValue:str forKey:@"cityName"];
//创建市下属区数组,并装入市字典
NSMutableArray * areaArray =[NSMutableArray array];
[cityDic setValue:areaArray forKey:@"areaArray"];
//将市字典装入省字典的数组中
[proArray addObject:cityDic];
}
if ([str hasPrefix:@" "]) {
//取出大数组最后一个元素(省字典)
NSMutableDictionary * proDic=[mutableArray lastObject];
//取出省字典中的数组(保存下属市的数组)
NSMutableArray * proArray =[proDic objectForKey:@"cityArray"];
//取出省数组中的最后一个元素(市字典)
NSMutableDictionary * cityDic =[proArray lastObject];
//取出市字典中的数组(区数组)
NSMutableArray * areaArray =[cityDic objectForKey:@"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);
}
}
}
return 0;
}