• 字典的key就相当于数组的下标,怎样操作数组你就学会了怎样才做字典:来感受一把
  • 需要注意的是读取文件的类型要集合.plist文件的rooty:否则将不能读入文件



// 1.全国省市:得到的是省和市

// 读取文件路径

NSArray *arr = [NSArray arrayWithContentsOfFile:@"/Users/Mu/Documents/MyXcode-MyNotes/OC/Read.plist/Read.plist/plists/3.Chinacities.plist"];

// dic[@"State"] 此时就是一个集合,通过关键字得到的就是其对应的value值,字典的简写

for (NSDictionary *dic in arr)

{

// 第一层嵌套

NSLog(@"%@", dic[@"State"]);

// dic[@"Cities"] key下的value值是一个集合,此时它就是一个集合:通过快速枚举(for…in…)即可取得集合内对象

for (NSDictionary *dict in dic[@"Cities"])

{

NSLog(@"%@", dict[@"city"]);

}

}


// 2.只包含地级市:得到的直辖市是其地区

// 这个就相当于是遍历集合

NSArray *arr = [NSArray arrayWithContentsOfFile:@"/Users/Mu/Documents/MyXcode-MyNotes/OC/Read.plist/Read.plist/plists/2.只包含地级市.plist"];

NSLog(@"%i", [arr containsObject:@"北京"]);

for (NSString *str in arr)

{

NSLog(@"%@", str);

}


// 3.按首字母排序的地级市:两个字典的Value都为集合:得到的是直辖市

// 一层集合包含两个字典:一个字典的value值是集合,另一个只是字符串

NSArray *arr = [NSArray arrayWithContentsOfFile:@"/Users/Mu/Documents/MyXcode-MyNotes/OC/Read.plist/Read.plist/plists/4.按首字母排序的地级市.plist"];

for (NSDictionary *dic in arr)

{

// 通过keydic[@"title"]取出的就是对应的字符串,因为集合内每个key都一样,因此遍历即可取出全部

NSLog(@"%@", dic[@"title"]);

for (NSString *str in dic[@"cities"])

{

NSLog(@"%@", str);

}


// 4.按首字母排序:得到的是市以及其拼音和每个字的首字母

NSArray *arr = [NSArray arrayWithContentsOfFile:@"/Users/Mu/Documents/MyXcode-MyNotes/OC/Read.plist/Read.plist/plists/5.包含拼音的市区.plist"];

// 集合内存了四个字典,其中三个字典的value值都是字符串,因此可以在通过遍历集合的时候通过其关键字取值

for (NSDictionary *dic in arr)

{

NSLog(@"%@, %@, %@", dic[@"name"], dic[@"pinYin"], dic[@"pinYinHead"]);

// dic[@"regions"]此时是一个集合(regions:为字典的key,取其value即为一个集合),遍历集合即得到了集合内字符串

for (NSDictionary *dict in dic[@"regions"])

{

NSLog(@"%@", dict[@"name"]);

}

}


// 5.全国省市区:第一存取对象是字典,因此不能直接使用集合接收(字典的嵌套)

// 注意:因为.plist文件Root为Dictionary,因此需要使用NSDictionary类型的指针来接收。集合接收为null

NSDictionary *dic = [NSDictionary dictionaryWithContentsOfFile:@"/Users/Mu/Documents/MyXcode-MyNotes/OC/Read.plist/Read.plist/plists/1.全国省市区.plist"];

// 字典嵌套字典。最后一层key对应的value值为集合,遍历集合即得到值:最后一层集合接收对象的指针为NSString,每次遍历都是取字典的所有value值

for (NSDictionary *key1 in dic.allValues)

{

for (NSDictionary *key2 in key1.allValues)

{

for (NSDictionary *key3 in key2.allValues)

{

// 此时字典得到的是集合,通过遍历集合就得到了所有的省市

for (NSArray *key4 in key3.allValues)

{

for (NSString *str in key4)

{

NSLog(@"%@", str);

}

}

}

}

}

iOS之NSDictionary和NSArray以及NSMutableDictionary和NSMutableArray:将不再是问题的更多相关文章

  1. IOS字典NSDictionary与NSMutableDictionary知识点

    字典中的元素是以键值对的形式存储的,键值对的键和值,都是任意的对象,但是键往往使用字符串,字典存储对象的地址没有顺序,字典的遍历分为:键的遍历和值的遍历,字典与数组的区别:数组讲究顺序,而字典可以快速 ...

  2. iOS 开发遇到的问题之(nil指针对NSDictionary及NSArray初始化的影响)

    nil指针对NSDictionary及NSArray初始化的影响 最近在做项目的时候遇到一个挺坑的崩溃问题,是由于NSDictionary初始化时nil指针引起的崩溃.假设我们现在要初始化一个{key ...

  3. 如何删除NSDictionary或NSArray中的NSNull

    前段时间与某公司的技术交流,被问到一个问题,如何删除NSDictionary中的NSNull.当时在纸上写,以前太依赖Xcode编译器了,以至于方法名都写不全,最终也没写出来,我想我肯定被鄙视的体无完 ...

  4. NSDictionary或NSArray与JSON字符串相互转换

    在iOS 5 中,苹果引入了一个解析JSON串的NSJSONSerialization类.通过该类,我们可以完成JSON数据与NSDictionary和NSArray之间的转化. 以前,我记得我用的是 ...

  5. NSJSONSerialization-JSON数据与NSDictionary和NSArray之间的转化

    转载▼     在iOS  5 中,苹果引入了一个解析JSON串的NSJSONSerialization类. 通过该类,我们可以完成JSON数据与NSDictionary和NSArray之间的转化. ...

  6. iOS - 数组与字典(NSArray & NSDictionary)

    1. 数组的常用处理方式 //--------------------不可变数组 //1.数组的创建 NSString *s1 = @"zhangsan"; NSString *s ...

  7. oc/object-c/ios哪种遍历NSArray/NSDictionary方式快?测试报告

    做app的时候,总免不了要多次遍历数组或者字典.究竟哪种遍历方式比较快呢?我做了如下测试:首先定义测试用宏: ? 1 2 3 4 5 6 7 8 9 #define MULogTimeinterval ...

  8. IOS Intro - NSDictionary and NSMutableDictionary

    NSDictionary.NSMutableDictionary的基本用法 1.不可变词典NSDictionary 字典初始化 NSNumber *numObj = [NSNumber numberW ...

  9. iOS常用 --- NSDictionary 与 NSMutableDictionary

    一.NSDictionary 字典的两种创建方法 NSDictionary *dic1 =[[NSDictionary alloc]init]; 2 // 或: 3 NSDictionary *dic ...

随机推荐

  1. shell 中的特殊符号的含义

    来源:http://blog.sina.com.cn/s/blog_62a151be0100x9rn.html 第四章 基本功 - 特殊符号 学习撰写 script 最迅速的捷径是观摩别人的 scri ...

  2. centos mono

    wget http://download.mono-project.com/sources/mono/mono-4.0.1.tar.bz2wget http://download.mono-proje ...

  3. think in uml 2.1

    业务建模

  4. sql语句按月份统计查询

    select year(createdate) 年,month(createdate) 月,count(1) from public_cms_arcwhere (userid in (select i ...

  5. margin:0 auto

    <!doctype html> <html> <head> <meta charset="utf-8"> <title> ...

  6. JNDI深入浅出

    1.什么是JNDI JNDI(The Java Naming and Directory Interface,Java命名和目录接口)是一组在Java应用中访问命名和目录服务的API.命名服务将名称和 ...

  7. 转:Windows平台配置Appium+Java环境

    1) 安装JDK 下载地址:http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html 安装 ...

  8. zencart hosts本地解析

    C:\WINDOWS\system32\drivers\etc\hosts 127.0.0.1  www.aberc220.com   别人 192.168.1.64 www.aberc220.com ...

  9. Linux中java项目环境部署,简单记录一下

    这里只是简单的记录一下linux环境下面如何快速的搭配好环境,使你的项目能在linux环境上面运行. 很多时候,我们都是用windows环境进行配置调试的,而真正很多服务器都是在linux服务器上面的 ...

  10. PHP开源CRM-推荐几个

    http://www.xinyou88.com/about/xcrm.html 因为医院要同步用户到诊统计的信息.是拿着表单来回送.途中大概有20分钟左右.有些机器和互联网可以搞定的事情.人力来做.在 ...