基于 Objective-C OC的省市区代码(字典数组嵌套)

//这是关于 字典与数组嵌套使用的一道经典例题,

//为了能让正在学习OC的伙伴们看的更加明白 注释写得很是详细

//
//  main.m
//  _Practice
//
//  Created by dllo on 15/11/10.
//  Copyright (c) 2015年 dllo. All rights reserved.
//
#import 

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

       
        //省市区
        //引入文件
        NSString *path = @"/Users/dllo/Desktop/项目程序源文件/Objective-C程序/_Practice/_Practice/area.txt";
        //新建字符串 用文件初始化
        NSString *text  = [ NSString  stringWithContentsOfFile:path encoding:NSUTF8StringEncoding error:nil];
        //以换行符分隔 存入数组中
        NSArray *lineArray = [ text componentsSeparatedByString:@"\n"];
        //创建一个省数组存放所有的 省字典
        NSMutableArray *proArray = [[NSMutableArray alloc] init];
        
        //遍历 分割后的数组 将其放入对应的 省 市 区内
        for (NSString * line  in lineArray) {
            //如果是省(省开通没有空格)
            if (![line hasPrefix:@" "]) {
                //创建新的省字典
                NSMutableDictionary *proDictonary = [NSMutableDictionary dictionary];
                //创建市数组来存放 他的市
                NSMutableArray *cityArray  = [NSMutableArray array];
                //@"city"作为key 省下得city数组作为value
                [proDictonary setObject:cityArray  forKey:@"city"];
                //@"pro"作为key 省得名字 作为value
                [proDictonary setObject:line forKey:@"pro"];
                //将创建的省字典放入省数组中
                [proArray addObject:proDictonary];
                
                //当前行 如果是市(开头两个空格)
            }else if (! [line hasPrefix:@"   "] ){
                //创建市字典
                NSMutableDictionary *cityDictionary = [NSMutableDictionary dictionary];
                //创建区数组 来存放他的区
                NSMutableArray *zoneArray = [NSMutableArray array];
                //@"zone"作为key  zone数组作为value
                [cityDictionary setObject:zoneArray forKey:@"zone"];
                //@"city"作为key 市的名字(line)作为 value
                [cityDictionary setObject: line  forKey:@"city"];
                //将创建的 city字典 放入所属的省中
                [[[proArray lastObject ] objectForKey:@"city"] addObject:cityDictionary];
                
            }else {
                //将区(line)放入所属的市中
                [[[[[proArray lastObject] objectForKey:@"city"] lastObject ] objectForKey:@"zone"] addObject:line];
                
                
            }
        }
        
        
        //打印
        //通过省数组 找出每个省字典
        for (NSMutableDictionary *proDic in proArray) {
            //通过 省字典的key (@"pro" ) 找到对应省得名字
            NSLog(@"%@", [proDic objectForKey:@"pro"]);
            //通过市数组 找到每个市字典
            for (NSMutableDictionary *cityDic in [proDic objectForKey:@"city"]) {
                //通过  市字典的key@"city" 找到市的名字
                NSLog(@"%@",[cityDic objectForKey:@"city"]);
                //在 区数组中 遍历 打印区
                for (NSString *zone in [cityDic objectForKey:@"zone"]) {
                    NSLog(@"%@",zone);
                }
            }
        }
        
     


你可能感兴趣的:(Objective-C练习题,iOS)