OC_省市区字典

//

//  main.m

//  OC05_省市区字典

//

//  Created by dlios on 15-5-13.

//  Copyright (c) 2015 king. All rights reserved.

//


#import


int main(int argc, const char * argv[]) {

   

    //路径

    NSString *path = @"/Users/dlios/Desktop/OC/OC05_省市区字典/OC05_省市区字典/area.txt";    //txt文件存放的位置

    

    //把路径对应的文件内容导入变成一个字符串

    NSString *str = [NSString stringWithContentsOfFile:path encoding:NSUTF8StringEncoding error:nil];

    

    //把字符串进行截取成数组

    NSArray *strArr = [str componentsSeparatedByString:@"\n"];

    

    //创建一个省数组

    NSMutableArray *provinceArr = [NSMutableArray array];

    

    for (NSString *temp in strArr) {

        //判断是不是省名

        if (![temp hasPrefix:@" "]) {

            //创建一个省字典

            NSMutableDictionary *proDic = [NSMutableDictionary dictionary];

            //第一对key - value, 省名

            [proDic setObject:temp forKey:@"proName"];

            

            //创建一个市数组

            NSMutableArray *cityArr = [NSMutableArray array];

            

            //第二对 key - value , 市列表

            [proDic setObject:cityArr forKey:@"cityArr"];

            

            //把省字典放到省数组中

            [provinceArr addObject:proDic];

//            NSMutableArray *cityArr = [NSMutableArray array];

//            

//            NSMutableDictionary *proDic = [NSMutableDictionary dictionaryWithObjectsAndKeys:temp, @"proName", cityArr, @"cityArr", nil];

//            

//            [provinceArr addObject:proDic];  //if里的代码可以也可以这样写,本人觉得这样写会对省市区整个结构了解的比较快



        }else if([temp hasPrefix:@"  "] && ![temp hasPrefix:@"    "]){

            //创建一个市字典

            NSMutableDictionary *cityDic = [NSMutableDictionary dictionary];

            //市字典的第一对 key - value

            [cityDic setObject:temp forKey:@"cityName"];

            

            //创建了一个区数组

            NSMutableArray *zoneArr = [NSMutableArray array];

            

            //市字典的第二对 key - value

            [cityDic setObject:zoneArr forKey:@"zoneArr"];

            

            //找到市所对应的省

            NSMutableDictionary *proDic = [provinceArr lastObject];

            

            //找省字典对应的市数组?

            NSMutableArray *cityArr = [proDic objectForKey:@"cityArr"];

            

            //把市字典,放入到市数组中

            [cityArr addObject:cityDic];

            

//            NSMutableArray *zoneArr = [NSMutableArray array];

//            

//            NSMutableDictionary *cityDic = [NSMutableDictionary dictionaryWithObjectsAndKeys:temp, @"cityName", zoneArr, @"zoneArr", nil];

//            

//            NSMutableDictionary *proDic = [provinceArr lastObject];

//            

//            NSMutableArray *cityArr = [proDic objectForKey:@"cityArr"];

//            

//            [cityArr addObject:cityDic];  //同上



        }else if([temp hasPrefix:@"    "]) {

            

            NSMutableDictionary *proDic = [provinceArr lastObject];

            

            //找市数组

            NSArray *cityArr = [proDic objectForKey:@"cityArr"];

            

            //找到对应的市字典

            NSMutableDictionary *cityDic = [cityArr lastObject];

            

            //找到对应的区数组

            NSMutableArray *zoneArr = [cityDic objectForKey:@"zoneArr"];

            

            //把区民加到区数组中

            [zoneArr addObject:temp];

        }

        

    }

    

    

    //进行遍历打印

    for (NSMutableDictionary *proDic in provinceArr) {

        

        NSLog(@"%@", [proDic objectForKey:@"proName"]);

           

        NSMutableArray *cityArr = [proDic objectForKey:@"cityArr"];

        

        for (NSMutableDictionary *cityDic in cityArr) {

        

            NSLog(@"%@", [cityDic objectForKey:@"cityName"]);

            

            NSMutableArray *zoneArr = [cityDic objectForKey:@"zoneArr"];

            for (NSString *str in zoneArr) {

                NSLog(@"%@", str);

            }

        }

    }

    


    //省数组---->省字典---->市数组---->市字典---->区数组

    

    //每遇到一个省就创建一个省字典,省字典里存放省名和市数组

      

    return 0;

}




每当遇到一个省都会创建一个省字典(包括省名,市数组(列表)),一个省接一个省的存储数据,当这个省的数据没有传完的时候,是不会往下一个省存储数据的,所有才有:

       //找到市所对应的省

            NSMutableDictionary *proDic = [provinceArr lastObject];



  NSMutableDictionary *proDic = [provinceArr lastObject];

            

            //找市数组

            NSArray *cityArr = [proDic objectForKey:@"cityArr"];

            

            //找到对应的市字典

            NSMutableDictionary *cityDic = [cityArr lastObject];


所以每次对下一级存储数据时,上一级都是最后一个对象.

例:假设我们已经存储了北京天津等数据,现在我们要存储广东省数据时,我们必须先把广东里的市名都给存储完毕,才能进行下一个省的市名数据存储.(这里我们先撇开区不谈).

省市区txt文件,百度就能找到,如下内容

北京 1
  北京市 1
    西城区 1
    东城区 2
    崇文区 3
    宣武区 4
    朝阳区 5
    丰台区 6
    石景山区 7
    海淀区 8
    门头沟区 9
    房山区 10
    通州区 11
    顺义区 12
    昌平区 13
    大兴区 14
    怀柔区 15
    平谷区 16
    密云区 17
    延庆区 18
天津 2
  天津市 2
    和平区 19
    河东区 20

    

你可能感兴趣的:(OC)