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

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

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

3.在进行排序前,我们首先要先滤清思路:这答题的难题是在于如何将字典装入数组,再把数组装入字典,所以关键点就在于如何通过嵌套将每个字典与数组归到于它们相对应的数组与字典里   提供一个小思路:数组->字典->数组->字典->数组

  1. 首先我们要建立一个包含所有省 市 区的省数组
  2. 然后再建立一个省字典 (包含省名和市数组)
  3. 再建立一个市字典 (同理包含市名和区数组)
  4. 建立好相应的字典和数组后,我们只要将所有的市,区通过嵌套存入相对应的数组即可

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

 根据路径产生相应的字符
tring *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>

以上就是对Objective-C 经典字典数组排序的示例代码,谢谢大家对本站的支持!

(0)

相关推荐

  • 简介Objective-C解析XML与JSON数据格式的方法

    解析XML 本文以解析本地XML为例,网络获取到的返回值只需转换成NSData型,解析是同理 需要解析的xml文件如下,users.xml <?xml version="1.0" encoding="UTF-8"?> <AllUsers> <message>用户信息</message> <user> <name>芳仔小脚印</name> <age>10</age&g

  • 浅析Objective-C中分类Category的使用

    无论一个类设计的如何完美,都不可避免的会遇到没有预测到的需求,那怎么扩展现有的类呢?当然,继承是个不错的选择.但是Objective-C提供了一种特别的方式来扩展类,叫Catagory,可以动态的为已经存在的类添加新的行为.这样可以保证类的原原来的基础上,较小的改动就可以增加需要的功能.使用Category对类进行扩展时,不需要访问其源代码,也不需要创建子类,这样我们可以扩展系统提供的类.Category使用简单的方式,实现了类的相关方法的模块化,把不同的类方法分配到不同的分类文件中. 使用Ob

  • C/C++在Java、Android和Objective-C三大平台下实现混合编程

    Android和iOS开发都支持C++开发,可以一套代码多平台使用.同时C++难以反编译的特性也可以为Android开发带来代码的保密,另一native特性也可以提高代码的运行效率. 一.为什么使用C/C++ 便于移植,用C/C++写得库可以方便在其他的平台上再次使用. 代码的保护,由于java层代码很容易被反编译,而C/C++库反汇难度较大. 提高程序的执行效率,将要求高性能的应用逻辑使用C/C++开发,从而提高应用程序的执行效率. 访问现有开源库,需要访问底层的API或引用一些只有C/C++

  • iOS App开发中Objective-C使用正则表达式进行匹配的方法

    iOS中有三种方式来实现正则表达式的匹配.现在将他们都记录在这里: 1.利用NSPredicate(谓词)匹配 例如匹配有效邮箱: NSString *email = @"nijino_saki@163.com": NSString *regex = @"[A-Z0-9a-z._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,4}"; NSPredicate *predicate = [NSPredicate predicateWithForma

  • 举例讲解Objective-C中@property属性的用法

    学过c/c++的朋友都知道,我们定义struct/class的时候,如果把访问限定符(public,protected,private)设置为public的话,那么我们是可以直接用.号来访问它内部的数据成员的.比如 //in Test.h class Test { public: int i; float f; }; 我在main函数里面是可以通过下面的方式来使用这个类的:(注意,如果在main函数里面使用此类,除了要包含头文件以外,最重要的是记得把main.m改成main.mm,否则会报一些奇

  • Objective-C的缓存框架EGOCache在iOS App开发中的使用

    EGOCache简介 EGOCache is a simple, thread-safe key value cache store. It has native support for NSString, UI/NSImage, and NSData, but can store anything that implements <NSCoding>. All cached items expire after the timeout, which by default, is one da

  • iOS中使用JSPatch框架使Objective-C与JavaScript代码交互

    JSPatch是GitHub上一个开源的框架,其可以通过Objective-C的run-time机制动态的使用JavaScript调用与替换项目中的Objective-C属性与方法.其框架小巧,代码简洁,并且通过系统的JavaScriptCore框架与Objective-C进行交互,这使其在安全性和审核风险上都有很强的优势.Git源码地址:https://github.com/bang590/JSPatch. 一.从一个官方的小demo看起 通过cocoapods将JSPath集成进一个Xcod

  • Objective-C 代码与Javascript 代码相互调用实例

    现在好的IOS 的 APP有时候会跟网页内容相关联,当然也是增加用户体验,及更好的,有效的体现APP 的功能. 由于本人在项目中会用到这部分功能,做下记录! JS调用OC 很多应用里面或多或少的调用了网页,来达到绚丽的效果,所谓的JS调用OC.....举个例子吧,网页上有个按钮 点击按钮跳转界面,跳转的动作由OC的代码实现. OC调用JS 还是举个例子,我们OC代码创建了输入框比如输入用户名,输入完成后显示在网页上,显示用户的用户名 一.利用webView的代理方法实现OC和JS的相互调用 创建

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

    1.首先要准备好包含所有省市区的文档,将文档拖到我们建好的Xcode里 2.然后新建一个路径NSString *path = @" ";   再将省市区文档拖到@"  "中; 3.在进行排序前,我们首先要先滤清思路:这答题的难题是在于如何将字典装入数组,再把数组装入字典,所以关键点就在于如何通过嵌套将每个字典与数组归到于它们相对应的数组与字典里   提供一个小思路:数组->字典->数组->字典->数组 首先我们要建立一个包含所有省 市 区的省

  • python数组排序方法之sort、sorted和argsort详解

    目录 引言 sort和sorted的区别如下 用法实例 1.升序排序 2.降序排序 3.如果不想要排序后的值,想要排序后的索引,可以这样做 4.字符串类型排序 5.二维数组排序 6.二维数组获取排序后的索引 7.字典数组排序 8.字典数组获取排序后的索引 9.对象排序 10.对象排序获取排序后的索引 11.一维数组排序[numpy] 12.一维数组获取排序后的索引[numpy] 13.一维数组降序排序[numpy] 14.二维数组排序[numpy] 15.二维数组获取排序后的索引[numpy]

  • python学习笔记:字典的使用示例详解

    经典字典使用函数dict:通过其他映射(比如其他字典)或者(键,值)这样的序列对建立字典.当然dict成为函数不是十分确切,它本质是一种类型.如同list. 复制代码 代码如下: items=[('name','zhang'),('age',42)]d=dict(items)d['name'] len(d):返回项的数量d[k]:返回键k上面的值.d[k]=v:将k对应的值设置为k.del d[k]:删除字典中的这一项.k in d:检查d中是否含有键为k的项.注:只能查找键,不能查找值.简单的

  • Python学习小技巧之利用字典的默认行为

    本文介绍的是关于Python利用字典的默认行为的相关内容,分享出来供大家参考学习,下面来看看详细的介绍: 典型代码1: from collections import defaultdict if __name__ == '__main__': data = defaultdict(int) data[0] += 1 print(data) 输出1: defaultdict(<type 'int'>, {0: 1}) 典型代码2: if __name__ == '__main__': data

  • Python基础之字典常见操作经典实例详解

    本文实例讲述了Python基础之字典常见操作.分享给大家供大家参考,具体如下: Python字典 Python 中的字典是Python中一个键值映射的数据结构,下面介绍一下如何优雅的操作字典. 创建字典 Python有两种方法可以创建字典,第一种是使用花括号,另一种是使用内建 函数dict >>> info = {} >>> info = dict() 初始化字典 Python可以在创建字典的时候初始化字典 >>> info = {"name

  • jquery+ajax实现省市区三级联动效果简单示例

    本文实例讲述了jquery+ajax实现省市区三级联动效果.分享给大家供大家参考,具体如下: 一直想学习下Ajax,没时间,汗,这借口太牵强了.下了点教程在手机里,翻了好几遍了,没实战一次. 最近的项目里需要Ajax实现效果,就下了个jquery,然后找了个实例,学习了一下,幡然醒悟,NND,jquery果然强大的一塌糊涂,实现Ajax简直就是不费吹灰之力.下面把学习过程跟大家分享下,虽然还没有搞清楚jquery ajax的底层相关.不管了.我们不需要去发明轮子.呵呵. 先上代码,是一个省市区三

  • Trie树_字典树(字符串排序)简介及实现

    1.综述 又称单词查找树,Trie树,是一种树形结构,是一种哈希树的变种.典型应用是用于统计,排序和保存大量的字符串(但不仅限于字符串),所以经常被搜索引擎系统用于文本词频统计.它的优点是:利用字符串的公共前缀来节约存储空间,最大限度地减少无谓的字符串比较,查询效率比哈希表高. Trie树结构的优点在于:1) 不限制子节点的数量: 2) 自定义的输入序列化,突破了具体语言.应用的限制,成为一个通用的框架: 3) 可以进行最大Tokens序列长度的限制:4) 根据已定阈值输出重复的字符串:5) 提

  • Python中文分词工具之结巴分词用法实例总结【经典案例】

    本文实例讲述了Python中文分词工具之结巴分词用法.分享给大家供大家参考,具体如下: 结巴分词工具的安装及基本用法,前面的文章<Python结巴中文分词工具使用过程中遇到的问题及解决方法>中已经有所描述.这里要说的内容与实际应用更贴近--从文本中读取中文信息,利用结巴分词工具进行分词及词性标注. 示例代码如下: #coding=utf-8 import jieba import jieba.posseg as pseg import time t1=time.time() f=open(&q

  • Python实现字典去除重复的方法示例

    本文实例讲述了Python实现字典去除重复的方法.分享给大家供大家参考,具体如下: #!/usr/bin/env python # encoding: utf-8 #字典去重小代码 import sys import os import platform try: pass except: print '''you have something wrong this is a simple jiaoben ''' sys.exit() why = 'why.txt' for i in xrang

  • php经典算法集锦

    本文实例讲述了php几个经典算法.分享给大家供大家参考,具体如下: 有5个人偷了一堆苹果,准备在第二天分赃.晚上,有一人遛出来,把所有菜果分成5份,但是多了一个,顺手把这个扔给树上的猴了,自己先拿1/5藏了.没想到其他四人也都是这么想的,都如第一个人一样分成5份把多的那一个扔给了猴,偷走了1/5.第二天,大家分赃,也是分成5份多一个扔给猴了.最后一人分了一份.问:共有多少苹果? for ($i = 1; ; $i++) { if ($i%5 == 1) { //第一个人取五分之一,还剩$t $t

随机推荐