Foundation框架: 8.OC中的集合类之三 - NSDictionary的基本认识
来源:互联网 发布:ipv6网络电视 编辑:程序博客网 时间:2024/05/17 04:12
前面我们讲完了两种集合类, 分别是NSArray和NSSet, 现在我们来讲讲第三种集合类,NSDicitonary, 直接翻译就是字典的意思, 它的功能和新华字典的功能一样, 可以一个一个翻开来查看, 查找里面的内容,NSDictionary相比起前面两种集合类来讲也是最灵活最好用的, 下面让我们一起来看看.
NSDictionary的创建以及存储方式有一些不一样, 它是由两个参数组合在一起的, 一个称为键, 一个称为值, 由这个组合在一起, 我们称为键值对, 下面来看看例子:
#import <Foundation/Foundation.h>int main(int argc, const char * argv[]){ NSDictionary *dict = [NSDictionary dictionaryWithObject:@"jack" forKey:@"name"]; id obj = [dict objectForKey:@"name"]; NSLog(@"%@", obj); return 0;}
打印出来的结果:
2015-02-05 21:56:43.280 8.NSDictionary[4019:303] jack
PS: 这里说明一下, NSDictionary的键值对是一一对应的, 并不能一个值对应多个键, 或者多个键对应多个值.
在面前我们都知道只要没有带NSMutable的, 那就说明该类是不可变的, 既然是这样子, 那这个NSDictionary也是同样的道理, 如果要有多个键值对, 那么就得在初始化的时候再添加, 比如:
#import <Foundation/Foundation.h>int main(int argc, const char * argv[]){ NSArray *objects = @[@"rose", @"28"]; NSArray *keys = @[@"name", @"age"]; NSDictionary *dict = [NSDictionary dictionaryWithObjects:objects forKeys:keys]; NSLog(@"%@", dict); return 0;}
打印出来的结果:
2015-02-05 22:05:35.411 8.NSDictionary[4041:303] { age = 28; name = rose;}
PS: 创建多个键值对的方法返回值必须是NSArray, 所以这里我们要创建两个NSArray对象, 并且初始化它们的值才可以在NSDictionary里面使用.
还有一种创建方法:
#import <Foundation/Foundation.h>int main(int argc, const char * argv[]){ NSDictionary *dict = [NSDictionary dictionaryWithObjectsAndKeys: @"jack", @"name", @"20", @"age", nil]; id obje = [dict objectForKey:@"age"]; NSLog(@"%@", obje); return 0;}
打印出来的结果:
2015-02-05 22:36:53.054 8.NSDictionary[4073:303] 20
但以上两种创建方法都非常的蛋疼, 每次都要写那么一大堆垃圾代码, 没有一点意思, 那有没有更简单的方法呢? 其实是有的, 这也是Xcode的一个特性, 和NSArray的快速创建一样, 而且代码的可读性更强, 下面让我们来看看:
#import <Foundation/Foundation.h>int main(int argc, const char * argv[]){ NSDictionary *dict = @{@"name" : @"rose" , @"age" : @"20"}; id obje = [dict objectForKey:@"age"]; NSLog(@"%@", obje); return 0;}
打印出来的结果:
2015-02-05 22:40:01.277 8.NSDictionary[4092:303] 20
以后我们就使用这个方法来创建, 因为其他的那些垃圾代码Xcode会自动帮我们去完成的~~
估计有人会说, 取值也很麻烦啊, 有没有更简单的? 其实是有的~~下面来看看~~
#import <Foundation/Foundation.h>int main(int argc, const char * argv[]){ NSDictionary *dict = @{@"name" : @"rose", @"age" : @"20"}; id obje = dict[@"age"]; NSLog(@"%@", obje); return 0;}
打印出来的结果:
2015-02-05 23:01:56.938 8.NSDictionary[4147:303] 20
还有一个, 就是打印出NSDictionary里面的个数:
#import <Foundation/Foundation.h>int main(int argc, const char * argv[]){ NSDictionary *dict = @{@"name" : @"rose", @"age" : @"20"}; NSLog(@"%ld", dict.count); return 0;}
打印出来的结果:
2015-02-05 23:03:10.326 8.NSDictionary[4157:303] 2
PS: 为什么这里是2呢, 其实打印出来的个数是NSDictionary的键值对个数, NSDictionary是以一个键值对来算的.
好了, 上面就是我们的NSDictionary的内容, 剩下的其他方法大家回去慢慢尝试吧.
0 0
- Foundation框架: 8.OC中的集合类之三 - NSDictionary的基本认识
- Foundation框架: 8.OC中的集合类之三 - NSSet和NSMutableSet的基本认识
- Foundation框架: 8.OC中的集合类之二 - NSMutableArray的基本认识
- Foundation框架: 9.OC中的集合类之四 - NSMutableDictionary的基本认识
- Foundation框架: 8.OC中的集合类之一 - NSArray的基本认识
- OC语法<4.3> Foundation框架中的集合类-NSDictionary
- Foundation -- OC集合 --NSDictionary
- OC:OC中的集合类-NSDictionary(三)
- Foundation框架之NSDictionary
- OC语法<4.2>:Foundation框架中的集合类-NSArray
- OC语法<4.4> Foundation框架中的集合类-NSSet
- [黑马程序员][OC]Foundation框架中的集合类
- OC学习笔记17--Foundation集合类之NSSet与NSDictionary
- OC基础——Foundation框架之集合型类
- 黑马程序员--OC之Foundation框架的使用<三>
- OC中的集合类NSSet、NSArray、NSDictionary
- 黑马程序员------Foundation框架------OC集合类的操作
- Foundation框架中的NSDictionary 、NSMutableDictionary
- Java 上传下载
- C#项目的生成事件及批处理文件
- vim 技巧
- hdu 3507(斜率优化)
- 【Servlet笔记】两种输出流以及乱码问题
- Foundation框架: 8.OC中的集合类之三 - NSDictionary的基本认识
- 关于 char wchar_t TCHAR LPCSTR LPCTSTR....(很基础,给自己做个总结)
- Oracle RAC+DG主库其中一个节点RESOLVABLE GAP
- 利用CxImage实现编解码Gif图像代码举例
- 打开文件时为什么要用二进制模式
- LA 6529 Eleven dp
- ios 制作自已的framework
- Swift笔记
- Pat 1040