#import <Foundation/Foundation.h>
int main(int argc, const char * argv[]) {
NSMutableArray *provinceArray = [NSMutableArray array];
//NSError *error =nil;
// 加載文件字符串 1.文件路徑 2.編碼格式3.錯誤信息
NSString *contentString = [NSString stringWithContentsOfFile:@"/Users/lanou3g/Desktop/area.txt" encoding:NSUTF8StringEncoding error:nil];
//NSLog(@"%@",contentString);
//以換行符分割字符串 得到每一行的字符串內容
NSArray *lineArray = [contentString componentsSeparatedByString:@"\n"];
for (NSString *lineString in lineArray) {
//NSLog(@"line:%@",lineString);
if (![lineString hasPrefix:@" "]) {
// 沒有空格前綴為省名
//創建一個省份字典
NSMutableDictionary *provincrDic = [NSMutableDictionary dictionary];
// 省份字典添加鍵值對(provinceName省份名)
[provincrDic setObject:lineString forKey:@"provinceName"];
//創建一個城市數組(后面存儲城市字典)
NSMutableArray *cityArray = [NSMutableArray array];
//添加鍵值對(cityArray:城市數組)
[provincrDic setObject:cityArray forKey:@"cityArray"];
//將省字典添加到省數組中
[provinceArray addObject:provincrDic];
}else if (![lineString hasPrefix:@" "]){
//前綴不空格且不是4個空格的話為城市名
//當讀取到城市名的時候需要找到該城市所屬的省份(省份數組中最后一個元素就是當前城市所屬省份)
NSMutableDictionary *provinceDic =[provinceArray lastObject];
NSMutableArray *cityArray = [provinceDic objectForKey:@"cityArray"];
//創建城市字典
NSMutableDictionary *cityDic = [NSMutableDictionary dictionary];
//添加鍵值對(cityName城市名)
[cityDic setObject:lineString forKey:@"cityName"];
//創建地區數組(后面用于存儲地區名稱)
NSMutableArray *areaArray = [NSMutableArray array];
//添加鍵值對(areaArray:地區數組)
[cityDic setObject:areaArray forKey:@"areaArray"];
//將城市字典存入對應的城市數組中
[cityArray addObject:cityDic];
}else{
//前綴有空格且有4個空格為地區名
//獲取當前所屬省份
NSMutableDictionary *provinceDic = [provinceArray lastObject];
//獲取該省份的城市數組
NSMutableArray *cityArray = [provinceDic objectForKey:@"cityArray"];
//從城市數組中獲取當前地區所屬城市
NSMutableDictionary *cityDic = [cityArray lastObject];
//獲取該城市的地區數組
NSMutableArray *areaArray = [cityDic objectForKey:@"areaArray"];
//將地區名存入該地區數組
[areaArray addObject:lineString];
}
}
//NSLog(@"%@",provinceArray);
for (NSMutableDictionary *provinceDic in provinceArray) {
NSLog(@"省份:%@",[provinceDic objectForKey:@"provinceName"]);
for (NSMutableDictionary *cityDic in [provinceDic objectForKey:@"cityArray"]) {
NSLog(@"城市:%@",[cityDic objectForKey:@"cityName"]);
for (NSString *areaName in [cityDic objectForKey:@"areaArray"]) {
NSLog(@"地區:%@",areaName);
}
}
}
return 0;
}
這是在OC中利用數組和字典的相互套用解析的,附一張思維圖。
19FF8B4BB6D40CB03C976A803F4E77C1.jpg