數(shù)組字典綜合案例(省市區(qū))

主要思路:分解省、市、區(qū),首先有一個(gè)最大的數(shù)組,是存放各個(gè)省的,省的數(shù)組里有省字典,省字典里有兩個(gè)鍵值對(duì),(provinceName:“北京”;cityArray[])。將省字典作為省數(shù)組的對(duì)象添加到省數(shù)組里。城市數(shù)組有兩個(gè)鍵值對(duì)(cityName:“北京市”;areaArray:[])與省數(shù)組類似。

#import <Foundation/Foundation.h>
#import "Log.h"
int main(int argc, const char * argv[]) {
    
    NSMutableArray *provinceArray = [NSMutableArray array];
    //加載文件得到字符串
    //參數(shù)1:文件路徑
    //參數(shù)2:編碼格式
    //參數(shù)3:錯(cuò)誤信息
    NSString *contentString = [NSString stringWithContentsOfFile:@"/Users/lanou3g/Downloads/area.txt" encoding:NSUTF8StringEncoding error:nil];

    //NSLog(@"%@",contentString);
    //以換行符分割字符串,得到每一行的字符串內(nèi)容
    NSArray *lineArray = [contentString componentsSeparatedByString:@"\n"];
    for (NSString *lineString in lineArray) {
      //前綴不是空格的話為省名
        if (![lineString hasPrefix:@" "]) {
            //創(chuàng)建一個(gè)省份字典
            NSMutableDictionary *provinceDic = [NSMutableDictionary dictionary];
            //省份字典添加鍵值對(duì)(provinceName:省份名)
            [provinceDic setObject:lineString forKey:@"provinceName"];
            //創(chuàng)建一個(gè)城市數(shù)組(用于后面存儲(chǔ)城市字典)
            NSMutableArray *cityArray = [NSMutableArray array];
            //添加鍵值對(duì)(cityArray:城市數(shù)組)
            [provinceDic setObject:cityArray forKey:@"cityArray"];
            //將省字典添加到省數(shù)組中
            [provinceArray addObject:provinceDic];
            
        }
else if (![lineString hasPrefix:@"    "]){
         //前綴有空格且不是4個(gè)空格的話為城市名
            //當(dāng)讀取到城市名的時(shí)候需要找到該城市所屬的省份(ps:當(dāng)前省份數(shù)組中最后一個(gè)元素就是當(dāng)前城市所屬省份)
        NSMutableDictionary *provinceDic = [provinceArray lastObject];
        NSMutableArray *cityArray = [provinceDic objectForKey:@"cityArray"];
        //創(chuàng)建一個(gè)城市字典
            NSMutableDictionary *cityDic = [NSMutableDictionary dictionary];
            //添加鍵值對(duì)(cityName:城市名)
            [cityDic setObject:lineString forKey:@"cityName"];
            //創(chuàng)建地區(qū)數(shù)組(ps:后面用于存儲(chǔ)地區(qū)名稱)
            NSMutableArray *areaArray = [NSMutableArray array];
            //添加鍵值對(duì)(areaArray:地區(qū)數(shù)組)
            [cityDic setObject:areaArray forKey:@"areaArray"];
            //將城市字典存入到對(duì)應(yīng)的城市數(shù)組中
            [cityArray addObject:cityDic];
            
        }else{
            //前綴有空格且有4個(gè)空格的為地區(qū)名
            
            //獲取當(dāng)前地區(qū)所屬省份
            NSMutableDictionary *provinceDic = [provinceArray lastObject];
            //獲取該省份的城市數(shù)組
            NSMutableArray *cityArray = [provinceDic objectForKey:@"cityArray"];
            //從當(dāng)前城市數(shù)組中獲取當(dāng)前地區(qū)所屬的城市
            NSMutableDictionary *cityDic = [cityArray lastObject];
            // 獲取該城市的地區(qū)數(shù)組
            NSMutableArray *areaArray = [cityDic objectForKey:@"areaArray"];
            //將地區(qū)名存入該地區(qū)數(shù)組
            [areaArray addObject:lineString];
            
        }
    }
     //遍歷省數(shù)組找到每一個(gè)省字典
    for (NSMutableDictionary *provinceDic in provinceArray) {
        NSLog(@"省份:%@",[provinceDic objectForKey:@"provinceName"]);
        //遍歷城市數(shù)組,根據(jù)省字典取出城市數(shù)組
        for (NSMutableDictionary *cityDic in [provinceDic objectForKey:@"cityArray"]) {
            NSLog(@"城市:%@",[cityDic objectForKey:@"cityName"]);
    
            for (NSString *areaName in [cityDic objectForKey:@"areaArray"]) {
                NSLog(@"地區(qū):%@",areaName);
            }
        }
    }
//遇到數(shù)組就遍歷,遇到字典就根據(jù)鍵取值

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容