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 ...
随机推荐
- jquery、zepto冲突
<script type="text/javascript" src="js/jquery.min.js"></script> < ...
- tomcat编码配置
<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" ...
- BigDecimal精度问题
介绍 1.商业计算使用BigDecimal. 2.使用参数为String的构造函数. 3.BigDecimal都是不可变的,每一步的运算时,都会产生一个新的对象.所以在做加减乘除后千万要保存操作后的值 ...
- struts学习笔记(四)
一. 文件的上传: 1). 表单需要注意的 3 点 2). Struts2 的文件上传实际上使用的是 Commons FileUpload 组件, 所以需要导入 commons-fileupload- ...
- idea 从远程仓库导入git项目
File--new --Project from vision control -- git 输入远程仓库地址 即可.
- 【UVALive4685-Succession】树形DP
http://acm.hust.edu.cn/vjudge/problem/14338 题意:给定一棵树,每个点有一个值,让你选择k个点,并且这k个点是连在一起的(从任意一个点出发,可以遍历完所有选择 ...
- 【BZOJ1901】Dynamic Rankings [整体二分]
Dynamic Rankings Time Limit: 10 Sec Memory Limit: 128 MB[Submit][Status][Discuss] Description 给定一个含 ...
- bzoj 4999: This Problem Is Too Simple!
Description 给您一颗树,每个节点有个初始值. 现在支持以下两种操作: 1. C i x(0<=x<2^31) 表示将i节点的值改为x. 2. Q i j x(0<=x&l ...
- 在Unity(C#)下实现Lazy Theta*寻路
在上篇文章中我们介绍了Lazy Theta*.本篇中我会演示一下我实现的Lazy Theta*. 先上代码 //在一个点被expand时是否调用DebugOnExpanded事件,用于debug查看e ...
- html 表格获取单行
参考:http://www.jb51.net/article/63161.htm function cell(btn_id) { {#var x=document.getElementById('#' ...