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 ...
随机推荐
- LVM to increase and reduce 10G size for /data
=======================increase10G for/data=============================(system env /dev/MongoData00 ...
- bzoj 1576: [Usaco2009 Jan]安全路经Travel——并查集+dijkstra
Description Input * 第一行: 两个空格分开的数, N和M * 第2..M+1行: 三个空格分开的数a_i, b_i,和t_i Output * 第1..N-1行: 第i行包含一个数 ...
- [BZOJ1025] [SCOI2009]游戏 解题报告
Description windy学会了一种游戏.对于1到N这N个数字,都有唯一且不同的1到N的数字与之对应.最开始windy把数字按顺序1,2,3,……,N写一排在纸上.然后再在这一排下面写上它们对 ...
- ie8以上及非ie8情况下的写法
<!-- [if gt ie 8]> <!--> <script src="no-ie8.js"></script> <!- ...
- easyui 在子tabs中打开新tabs(关于easyUI在子页面增加显示tabs的一个问题)
现在说的是在子页面点个按钮也能触发增加子页面的情况. 情景是,在父页面上有个div如: <div class="easyui-tabs" id="main" ...
- windows下nginx安装及使用
nginx简介: nginx是一款轻量级web服务器,也是一款反向代理服务器(比如域名转发等). nginx功能: 1.可直接支持Rails和PHP的程序. 2.可作为HTTP反向代理服务器. 3.作 ...
- 定制一个支持中英文的简单LaTex模板
平常写汇报文档什么的,word排版有时还是比较费劲,遂定制一个简单的LaTex模板,中文默认为宋体,英文为LaTex默认字体,支持彩色高亮展示,有目录书签,有页眉展示,大致如下: LaTex代码如下: ...
- java使用maven项目(二)分模块开发
1 整合ssh框架 1.1 依赖传递 只添加了一个struts2-core依赖,发现项目中出现了很多jar, 这种情况 叫 依赖传递 1.2 依赖版本冲突的解决 1. 第 ...
- MySQL的事务理解
在学习事务这一概念前,我们需要需要构思一个场景 场景构思 假设该场景发生于一个银行转账背景下,月中,又到了发工资的日子.学校打算给A老师发放一个月的工资.(此处,我们假设转账都是由人工操作的),整个过 ...
- 16.RDD实战
第16课:RDD实战 由于RDD的不可修改的特性,导致RDD的操作与正常面向对象的操作不同,RDD的操作基本分为3大类:transformation,action,contoller 1. Tra ...