OC语言基础之NSDictionary
1.NSDictionary字典的创建
1: // key value
2: // key -==> value
3: NSDictionary *dict = [NSDictionary dictionaryWithObject:@"v" forKey:@"key"];
4:
5: NSArray *keys = [NSArray arrayWithObjects:@"k1", @"k2", nil];
6: NSArray *values = [NSArray arrayWithObjects:@"v1", @"v2", nil];
7: NSDictionary *dict1 = [NSDictionary dictionaryWithObjects:values
8: forKeys:keys];
9: NSDictionary *dict2 = [NSDictionary dictionaryWithObjectsAndKeys:@"v", @"key",
10: @"v1", @"key1",
11: nil];
12: NSLog(@"%@", dict2);
13:
14:
15: // BOOL isSuccess = [dict writeToFile:@"/Users/apple/Desktop/1.txt"
16: // atomically:YES];
17: // if (isSuccess) {
18: // NSLog(@"成功");
19: // }else{
20: // NSLog(@"写入失败");
21: // }
22:
23: NSDictionary *dict3 = [NSDictionary dictionaryWithContentsOfFile:@"/Users/apple/Desktop/1.txt"];
24: NSLog(@"%@", dict3);
字典的遍历
1: NSDictionary *pDict = [NSDictionary dictionaryWithObjectsAndKeys:@"abc", @"name",
2: @"11", @"age",
3: @"男", @"gender",
4: nil];
5: // NSArray *keys = [pDict allKeys];
6: // for (int i = 0; i<[pDict count]; i++) {
7: // NSString *key = [keys objectAtIndex:i];
8: // NSString *value = [pDict objectForKey:key];
9: // NSLog(@"%@: value= %@", key, value);
10: // }
11:
12: // for (id key in pDict) {
13: // NSLog(@"%@", key);
14: // }
15: //
16:
17: [pDict enumerateKeysAndObjectsUsingBlock:^(id key, id obj, BOOL *stop) {
18: NSLog(@"%@", key);
19:
20: // 修改stop指向内存的值
21: *stop = YES;
22: }];
2.可变字典
1:
2: NSMutableDictionary *dictM = [NSMutableDictionary dictionaryWithObjectsAndKeys:@"v", @"key",
3: nil];
4: [dictM setObject:@"1" forKey:@"key"];
5: NSLog(@"%@", dictM);
3.具体使用的例子
1: // 名字
2: // 年龄
3: // 性别
4: NSDictionary *pDict = [NSDictionary dictionaryWithObjectsAndKeys:
5: @"11", @"age",
6: @"abc", @"name",
7: @"男", @"gender",
8: nil];
9:
10:
11: // NSMutableArray *array = [NSMutableArray array];
12: // [array addObject:pDict];
13:
14: id name = [pDict objectForKey:@"name"];
15: NSLog(@"%@", name);
4.各常用类对比
1: /*
2: 集合
3: 1.NSArray\NSMutableArray
4: * 有序
5: * 快速创建(不可变):@[obj1, obj2, obj3]
6: * 快速访问元素:数组名[i]
7:
8: 2.NSSet\NSMutableSet
9: * 无序
10:
11: 3.NSDictionary\NSMutableDictionary
12: * 无序
13: * 快速创建(不可变):@{key1 : value1, key2 : value2}
14: * 快速访问元素:字典名[key]
15: */
例子
1: /*
2: 字典:
3:
4: key ----> value
5: 索引 ----> 文字内容
6:
7: 里面存储的东西都是键值对
8:
9:
10: */
11:
12: // NSDictionary *dict = [NSDictionary dictionaryWithObject:@"jack" forKey:@"name"];
13:
14:
15: // NSArray *keys = @[@"name", @"address"];
16: // NSArray *objects = @[@"jack", @"北京"];
17:
18: // NSDictionary *dict = [NSDictionary dictionaryWithObjects:objects forKeys:keys];
19:
20:
21: /*
22: NSDictionary *dict = [NSDictionary dictionaryWithObjectsAndKeys:
23: @"jack", @"name",
24: @"北京", @"address",
25: @"32423434", @"qq", nil];*/
26:
27:
28: NSDictionary *dict = @{@"name" : @"jack", @"address" : @"北京"};
29:
30: // id obj = [dict objectForKey:@"name"];
31:
32: id obj = dict[@"name"];
33:
34: NSLog(@"%@", obj);
35:
36:
37:
38: // 返回的是键值对的个数
39: NSLog(@"%ld", dict.count);
OC语言基础之NSDictionary的更多相关文章
- OC语言基础知识
OC语言基础知识 一.面向对象 OC语言是面向对象的,c语言是面向过程的,面向对象和面向过程只是解决问题的两种思考方式,面向过程关注的是解决问题涉及的步骤,面向对象关注的是设计能够实现解决问题所需功能 ...
- 李洪强iOS开发之OC语言基础知识
OC语言基础知识 一.面向对象 OC语言是面向对象的,c语言是面向过程的,面向对象和面向过程只是解决问题的两种思考方式,面向过程关注的是解决问题涉及的步骤,面向对象关注的是设计能够实现解决问题所需功能 ...
- 黑马程序员——OC语言基础语法 面向对象的思想
Java培训.Android培训.iOS培训..Net培训.期待与您交流! (以下内容是对黑马苹果入学视频的个人知识点总结)(一)基础语法 1)关键字 @interface.@implementati ...
- OC语言基础之代码的封装
1.封装的注意点 1: // 成员变量尽量不要用@public 2: // @public 3: int age; 1: //@public 2: // 只读(readonly):只允许外界访问我的n ...
- OC语言基础之NSArray
0.数组的分类 NSArray :不可变数组 NSMutableArray : 可变数组 1: // @[] 只创建不可变数组NSArray 2: /* 错误写法 3: NSMutableArray ...
- OC语言基础之NSString
1.字符串的创建 1: NSString *s1 = @"jack"; 2: 3: //NSString *s2 = [[NSString alloc] initWithStrin ...
- OC语言基础之利用property优化封装
1.property功能用法 1: // @property:可以自动生成某个成员变量的setter和getter声明 2: @property int age;//可以直接免去变量的声明 3: // ...
- OC语言基础之函数与方法
方法 1.对象方法都是以减号 - 2.对象方法的声明必须写在@interface和@end之间 对象方法的实现必须写在@implementation和@end之间 3.对象方法只能由对象来调用 ...
- OC语言基础之类的本质
一.类的本质 1: // 类本身也是一个对象,是个Class类型的对象,简称类对象 2: 3: /* 4: 利用Class 创建 Person类对象 5: 6: 利用 Person类对象 创建 Per ...
随机推荐
- koala 编译scss不支持中文解决方案
方法一: 在scss文件第一行加上代码:@charset "utf-8"; 方法二: 进入到Koala 安装目录 C:\Koala\rubygems\gems\sass-3.4.9 ...
- Spring 中 AbstractExcelView 支持根据模板生成Excel文件. 通过设置 view 的 URL 属性指定模板的路径
注意:1. 模板需放在 WEB-INF 目录下2. 指定模板路径时不需要添加扩展名, Spring将自动添加 .xls 到URL 属性中.3. 在指定URL前需先设置 view 的 Applicat ...
- LOJ 6057 - [HNOI2016]序列 加强版再加强版
Description 给定一个长度为 \(n\le 3*10^6\) 的序列 \(q\le 10^7\) 次询问每次求区间 \([l,r]\) 的所有子区间的最小值的和 询问随机 Solution ...
- python实现多个文件的分发
之前写的脚本只能分发一个配置,每次分发多个配置总要执行很多次,很不爽,于是就有了这个脚本 from multiprocessing import Process import paramiko imp ...
- TCP(一)
TCP的特点:三次握手.四次挥手.可靠连接.丢包重传.所有的关键词都围绕着可靠传输. 实现可靠传输的核心机制:seq+ack.通过ack判断是否有丢包,是否需要重传. 三次握手 1)初始状态:clie ...
- usaco 月赛 2005 january watchcow
2013-09-18 08:13 //By BLADEVIL var n, m :longint; pre, other :..] of longint; last :..] of longint; ...
- Linux 添加PPA源
我们在使用Ubuntu安装程序时经常会遇到添加软件源的操作,最常见的是ppa软件源. 例如:sudo add-apt-repository ppa:rvm/smplayer 这就是添加smplayer ...
- redis配置错误导致服务器不能启动
redis-server忘了把配置里面的daemonize的no改成yes所以把redis-server加入到了/etc/rc.local里面,在服务器启动的时候就会阻塞在这里,导致服务器不能启动.[ ...
- linux设备驱动中的并发控制【转】
转自:http://www.cnblogs.com/plinx/archive/2013/01/28/2873121.html 在linux内核中,主要的静态发生于以下几种情况: 1.对称多处理器(S ...
- python学习笔记 async and await
用asyncio提供的@asyncio.coroutine可以把一个generator标记为coroutine类型,然后在coroutine内部用yield from调用另一个coroutine实现异 ...