#Objective-C 经典字典数组排序 - 省市区

原创 2015年12月24日 09:42:10


1.首先要准备好包含所有省市区的文档,将文档拖到我们建好的Xcode里



2.然后新建一个路径NSString *path = @" ";   再将省市区文档拖到@"  "中;


3.在进行排序前,我们首先要先滤清思路:这答题的难题是在于如何将字典装入数组,再把数组装入字典,所以关键点就在于如何通过嵌套将每个字典与数组归到于它们相对应的数组与字典里   提供一个小思路:数组->字典->数组->字典->数组
  1. 首先我们要建立一个包含所有省 市 区的省数组
  2. 然后再建立一个省字典 (包含省名和市数组)
  3. 再建立一个市字典 (同理包含市名和区数组)
  4. 建立好相应的字典和数组后,我们只要将所有的市,区通过嵌套存入相对应的数组即可

4.完成上面的准备工作后,我们就可以开始进行省市区的排序了

     根据路径产生相应的字符                          
NSString *str = [NSString stringWithContentsOfFile:path encoding:NSUTF8StringEncoding error:nil];
   对字符串进行切割成为数组
   NSArray *array = [str componentsSeparatedByString:@"\n"];

    建立一个大数组
    NSMutableArray *mutableArray = [NSMutableArray array];
    for (NSString *str in array) {

      判断非空格字符,找出省
        if (![str hasPrefix:@" "]) {

     每找到一个省名字,就创建一个字典
     NSMutableDictionary *proDic = [NSMutableDictionary dictionary];

     将省名存入字典,并设置Key为PROVIN
     [proDic setObject:str forKeyedSubscript:@"PROVIN"];

     创建一个数组,作为存下属市用
     NSMutableArray *cityArray = [NSMutableArray array];

     将市数组存入字典,设置key位CITYARRAY
     [proDic setObject:cityArray forKeyedSubscript:@"CITYARRAY"];
     [mutableArray addObject:proDic];
        }

     找到市名字
     if ([str hasPrefix:@"  "]&& ![str hasPrefix:@"    "]) {

     取出数组最后一个元素,代表市所隶属的省字典
     NSDictionary *proDic = [mutableArray lastObject];

            
     将字典中预留的数组取出
     NSMutableArray *cityArray = [proDic objectForKey:@"CITYARRAY"];
            
     每找到一个市,创建一个字典
     NSMutableDictionary *cityDic = [NSMutableDictionary dictionary];
            
     将市名字存入字典
     [cityDic setObject:str forKey:@"CITY"];
            
     给下属区域创建个数组作为预留
     NSMutableArray *areaArray = [NSMutableArray array];
           
     存入字典
     [cityDic setObject:areaArray forKey:@"AREAARRAY"];
           
     将市字典存入数组中
     [cityArray addObject:cityDic];
     }
        
      找出下属区
        if ([str hasPrefix:@"    "]) {
           找出隶属的省字典
           NSDictionary *proDic = [mutableArray lastObject];
           找出市数组
           NSMutableArray *cityArray = [proDic objectForKey:@"CITYARRAY"];
           找出存储市的字典
           NSDictionary *cityDic = [cityArray lastObject];
         找出字典中区数区
           NSMutableArray *areaArray = [cityDic objectForKey:@"AREAARRAY"];
           将区域名字存入数组
            [areaArray addObject:str];
       }
   }
    for (NSDictionary *dic in mutableArray) {
        NSLog(@"%@",[dic objectForKey:@"PROVIN"]);
        for (NSDictionary *cityDic in [dic objectForKey:@"CITYARRAY"]) {
            NSLog(@"%@",[cityDic objectForKey:@"CITY"]);
           for (NSString *string  in [cityDic objectForKey:@"AREAARRAY"]) {
               NSLog(@"%@",string);
            
            }
       }
        
   }</span></span>


版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

圆形进度条,可设置内外环,多彩

今天做一个健身的项目,客户需要一个圆形的进度条来查看个人的运动记录等,做了一些功课之后贴出代码大家一起分享下 新建一个继承UIView类 .h文件 @interface MyProgressVie...

Always On对Replication的影响

Sql server Always On对Replication有一定的影响(以前的mirror如有问题也会影响到replication) 当HA Group中有node发生异常时,无法正常同步或者...

手动设置屏幕的方向或者称之为旋转

在实际项目中我们会碰到个别试图需要做出横屏竖屏等状态, 在之前我们对一个viewController的基类重写它的三个方法确实实现了,但是现在不满足需求了。 这个时候我们需要在appDelegat...

第五章 类的继承和super的使用调用父类构造方法

类的继承 mammals dogs cats h...

LeetCode | Reverse Words in a String

题目: Given an input string, reverse the string word by word. For example, Given s = "the sky is bl...

关注CSDN程序人生公众号,轻松获得下载积分

关注公众号 在公众号里回复“”秘密“”两个字 返回 http://task.csdn.net/m/task/home?task_id=398 领取奖励 提示:根据公众号里的自动回复,完成...

spring+springMVC+mybatis整合框架增删改查demo(包含资源下载链接)

一、运行环境 MyEclipse+Tomcat+MySQL 二、项目包结构 三、entity实体包

CSS3你可能不知道的冷知识

可能我们在看一些网页的源码时 会发现自己从来没见过的属性或用法 今天我就来总结一下 CSS3的冷知识 样式计算在CSS中也可以进行简单的计算 通过calc函数可以实现 这样还可以使我们的元...

腾讯周年搞挖宝行动吗一↑如打不开请点击【百度快照】

0755_【3303一7554】(全国免费专线)騰讯官网咨询电话活动咨询:0755_【3303一7554】王经理接听地址:广东省深圳市高新科技园南区高新南一道飞亚达高科技大厦    1998年11月 ...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)