iOS之NSDictionary和NSArray以及NSMutableDictionary和NSMutableArray:将不再是问题
- 字典的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:将不再是问题的更多相关文章
- IOS字典NSDictionary与NSMutableDictionary知识点
字典中的元素是以键值对的形式存储的,键值对的键和值,都是任意的对象,但是键往往使用字符串,字典存储对象的地址没有顺序,字典的遍历分为:键的遍历和值的遍历,字典与数组的区别:数组讲究顺序,而字典可以快速 ...
- iOS 开发遇到的问题之(nil指针对NSDictionary及NSArray初始化的影响)
nil指针对NSDictionary及NSArray初始化的影响 最近在做项目的时候遇到一个挺坑的崩溃问题,是由于NSDictionary初始化时nil指针引起的崩溃.假设我们现在要初始化一个{key ...
- 如何删除NSDictionary或NSArray中的NSNull
前段时间与某公司的技术交流,被问到一个问题,如何删除NSDictionary中的NSNull.当时在纸上写,以前太依赖Xcode编译器了,以至于方法名都写不全,最终也没写出来,我想我肯定被鄙视的体无完 ...
- NSDictionary或NSArray与JSON字符串相互转换
在iOS 5 中,苹果引入了一个解析JSON串的NSJSONSerialization类.通过该类,我们可以完成JSON数据与NSDictionary和NSArray之间的转化. 以前,我记得我用的是 ...
- NSJSONSerialization-JSON数据与NSDictionary和NSArray之间的转化
转载▼ 在iOS 5 中,苹果引入了一个解析JSON串的NSJSONSerialization类. 通过该类,我们可以完成JSON数据与NSDictionary和NSArray之间的转化. ...
- iOS - 数组与字典(NSArray & NSDictionary)
1. 数组的常用处理方式 //--------------------不可变数组 //1.数组的创建 NSString *s1 = @"zhangsan"; NSString *s ...
- oc/object-c/ios哪种遍历NSArray/NSDictionary方式快?测试报告
做app的时候,总免不了要多次遍历数组或者字典.究竟哪种遍历方式比较快呢?我做了如下测试:首先定义测试用宏: ? 1 2 3 4 5 6 7 8 9 #define MULogTimeinterval ...
- IOS Intro - NSDictionary and NSMutableDictionary
NSDictionary.NSMutableDictionary的基本用法 1.不可变词典NSDictionary 字典初始化 NSNumber *numObj = [NSNumber numberW ...
- iOS常用 --- NSDictionary 与 NSMutableDictionary
一.NSDictionary 字典的两种创建方法 NSDictionary *dic1 =[[NSDictionary alloc]init]; 2 // 或: 3 NSDictionary *dic ...
随机推荐
- auto ash v1
startdate=$1enddate=$2#reporttype=$3#reportformat='text'oraclehome=`echo $ORACLE_HOME` dbid=`sqlplus ...
- ant android打包--学习第一弹
1. 准备工作 用eclipse创建一个android项目 安装ant和SDK,并且添加到系统环境变量 2.ant 使用 2.1 ant简单的帮助命令 ant -p 2.2 创建ant配置文件%AND ...
- Hibernate 系列教程1-枚举单例类
你还在为不知道怎样正确使用Hibernate而纠结吗 你还在为不知道怎样配置映射文件而郁闷吗 枚举单例(Enum Singleton) 是实现单例模式的一种方式而已,不过写法简单,创建枚举默认也是线程 ...
- POJ 2318 TOYS 叉积
题目大意:给出一个长方形盒子的左上点,右下点坐标.给出n个隔板的坐标,和m个玩具的坐标,求每个区间内有多少个玩具. 题目思路:利用叉积判断玩具在隔板的左方或右方,并用二分优化查找过程. #includ ...
- gvim work notes.. a few days' work on 64bit vim and plugin compilations
(a 600MB+ sized c/c++ compiler which is capable of hi-light and JB styled completion!! and of-course ...
- 指针--摘自C++技术网 作者dx
“指针是什么?”“指针就是一种数据类型.”“你确定?”“那数据类型是什么?额,这个???类型就是类型,还能怎么解释嘛.”“指针有多少种?”“指针有好多种,比如整型指针,字符指针等等.”“指针是怎么确定 ...
- POJ 2635 The Embarrassed Cryptographer(大数求余)
题意:给出一个大数,这个大数由两个素数相乘得到,让我们判断是否其中一个素数比L要小,如果两个都小,输出较小的那个. 分析:大数求余的方法:针对题目中的样例,143 11,我们可以这样算,1 % 11 ...
- 转:loadrunner经典面试题
在LoadRunner中为什么要设置思考时间和pacing 答: 录制时记录的是客户端和服务端的交互,如果要精确模拟 用户的行为,那么客户操作客户端时花费了很多时间要怎么模拟呢?录入 填写提交的内容, ...
- mybatis generator Date类型时间丢失
开篇 本次项目换用了Oracle数据库,讲真,真的不好用,不太喜欢,比较喜欢轻量级的MySQL但是不得不说从Oracle的严谨中学到不少好东西. <resultMap id="Base ...
- Angularjs循环二维数组
<div ng-app> <div ng-controller="test"> <div ng-repeat="links in slide ...