词典对象(NSDictionary和NSMutableDictionary)
词典(dictionary)顾名思义就是同由键-值组成的数据集合.与在词典中查找单词定义一样,可以通过对象的键从词典中获取需要的对象,看到 这里,你是不是想起了java中的map?和NSArray一样,一个词典对象也能保存不同类型的值,词典也分别有不可变词典和可变的词典 (NSDictionary与NSMutableDictionary),前者是线程安全的,后者不是 。
[NSDictionary dictionaryWithObjectsAndKeys:..] : 使用键值对创建词典对象,结尾必需使用nil标志结束。
[dictionary count]: 得到词典的键值对数量。
[dictionary keyEnumerator]: 将词典的所有key储存在NSEnumerator中,类似于Java语言中的迭代器
[dictionary objectEnumerator]: 将词典的所有value储存在NSEnumerator中
[dictionary objectForKey:key]: 通过传入key对象可以拿到当前key对应储存的值。
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
|
intmain(intargc,constchar*argv[])
{
@autoreleasepool{
NSDictionary*aboutme=[NSDictionary dictionaryWithObjectsAndKeys:@"Liuzhichao",@"name",@"24",@"age",nil];
//得到词典的键值对数量
NSLog(@"%lu",[aboutme count]);
//将词典的所有key储存在NSEnumerator中
NSEnumerator*enumeratorKey=[aboutme keyEnumerator];
for(NSObject*objectinenumeratorKey){
NSLog(@"key:%@",object);
}
//将词典的所有value储存在NSEnumerator中
NSEnumerator*enumeratorObject=[aboutme objectEnumerator];
for(NSObject*objectinenumeratorObject){
NSLog(@"value:%@",object);
}
//打印词典中所有的键值对
for(NSString*keyinaboutme){
NSLog(@"%@ : %@",key,[aboutme objectForKey:key]);
}
//通过传入key对象可以拿到当前key对应储存的值
NSLog(@"key name的值是:%@",[aboutme objectForKey:@"name"]);
}
return0;
}
|
NSMutableDictionary是NSDictionary的子类,所以它继承了NSDictionary类的方法.
+(id)dictionaryWithCapacity:size 创建一个size大小的可变字典
-(id)initWithCapacity:size 初始化一个size 大小的可变字典
-(void)removeAllObjects 删除字典中所有元素
-(void)removeObjectForKey:key 删除字典中key位置的元素
-(void)setObject:obj forKey:key 添加 (key , obj)到字典中去;若key已经存在,则替换值为 obj
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
|
intmain(intargc,constchar*argv[])
{
@autoreleasepool{
// 创建动态字典,初始化长度为5
NSMutableDictionary*mutableDictionary=[NSMutableDictionary dictionaryWithCapacity:5];
// 向字典中添加数据
[mutableDictionary setObject:@"obj1" forKey:@"key1"];
[mutableDictionary setObject:@"obj2" forKey:@"key2"];
[mutableDictionary setObject:@"obj3" forKey:@"key3"];
[mutableDictionary setObject:@"obj4" forKey:@"key4"];
[mutableDictionary setObject:@"obj5" forKey:@"key5"];
// 删除单个元素
[mutableDictionary removeObjectForKey:@"key4"];
// 增加一个元素,key3已经存在,会修改key3对应的值
[mutableDictionary setObject:@"obj33333" forKey:@"key3"];
// 打印可变字典中所有key
NSLog(@"all keys: %@",[mutableDictionary allKeys]);
// 打印可变字典中所有value
NSLog(@"all values: %@",[mutableDictionary allValues]);
}
return0;
}
|
和数组不一样,词典对象是无序的,所以,当枚举词典时,第一个放到词典中的键-对象并不一定会第一个取出.
词典对象(NSDictionary和NSMutableDictionary)的更多相关文章
- 词典对象 NSDictionary与NSMutableDictionary
做过Java语言或者 C语言开发的朋友应该很清楚关键字map 吧,它可以将数据以键值对儿的形式储存起来,取值的时候通过KEY就可以直接拿到对应的值,非常方便,是一种非常常用的数据结构.在Objecti ...
- Objective-C语法之NSDictionary和NSMutableDictionary
Java 有Map,可以把数据以键值对的形式储存起来,取值的时候通过key就可以直接拿到对应的值,方便快捷.在Objective-C语言中,词典就是做这样的事情的,和NSArray一样,一个词典对象也 ...
- 字典NSDictionary以及NSMutableDictionary的用法总结
做过Java语言 或者 C语言 开发的朋友应该很清楚 关键字map 吧,它可以将数据以键值对儿的形式储存起来,取值的时候通过KEY就可以直接拿到对应的值,非常方便.在Objective-C语言中 词典 ...
- NSDictionary、NSMutableDictionary的基本用法
NSDictionary.NSMutableDictionary的基本用法 1.不可变词典NSDictionary 字典初始化 NSNumber *numObj = [NSNumber numberW ...
- (转载)目前最细致清晰的NSDictionary以及NSMutableDictionary用法总结
文章转载自:http://www.cnblogs.com/wengzilin/archive/2012/03/15/2397712.html 做过Java语言 或者 C语言 开发的朋友应该很清楚 关键 ...
- 【转】目前最细致清晰的NSDictionary以及NSMutableDictionary用法总结 -- 不错
原文网址:http://www.cnblogs.com/wengzilin/archive/2012/03/15/2397712.html 做过Java语言 或者 C语言 开发的朋友应该很清楚 关键字 ...
- IOS Intro - NSDictionary and NSMutableDictionary
NSDictionary.NSMutableDictionary的基本用法 1.不可变词典NSDictionary 字典初始化 NSNumber *numObj = [NSNumber numberW ...
- [Objective-C] 009_Foundation框架之NSDictionary与NSMutableDictionary
在Cocoa Foundation中NSDictionary和NSMutableDictionary 用于对象有序集合,NSDictionary和NSMutableDictionary 与 NSArr ...
- 黑马程序员-NSDictionary和NSMutableDictionary
NSDictionary和NSMutableDictionary:通过key和value进行对应,进行存储元素,能够方便提取所需的元素.key是不能够重复出现,但是value能够重复出现.NSDict ...
随机推荐
- 使用MeidaStore.Audio获得手机中的音频文件
MediaStore是安卓系统自带的多媒体系统数据库,他在每次开机时刷新一次,可以通过Cursor这个类对数据库进行访问与修改,修改之后需用广播强制刷新. 使用Cursor必须通过Context获得C ...
- webpack 环境搭建+实现热更新
让我们一起构建一个小的app 为了便于你更好的了解Webpack带来的好处,我们将会构建一个非常小的app并将资源文件打包.在这个教程中我推荐基于Node4或Node5和NPM3来进行开发,这样就避免 ...
- Leetcode 480.滑动窗口中位数
滑动窗口中位数 中位数是有序序列最中间的那个数.如果序列的大小是偶数,则没有最中间的数:此时中位数是最中间的两个数的平均数. 例如: [2,3,4],中位数是 3 [2,3],中位数是 (2 + 3) ...
- web结对项目
一.Coding.Net项目地址: https://git.coding.net/verde/Pair_Work.git 二.对接口进行的设计 看教科书和其它资料中关于Informati ...
- 关于 lambda expression 返回值的类型转换
lambda expression(lambda 表达式,$\lambda$ 表达式) 是 C++ 11 引入的特性. 一般而言,lambda 表达式的返回值类型可不指定,而由返回值推断. 需要注意的 ...
- [NOIP2009] $Hankson$ 的趣味题 (数论,gcd)
题目链接 Solution 此题,用到的结论都是比较浅显的,但是,我竟然没想到反过来枚举... 只有50分... 被自己蠢哭... 结论比较浅显: 1.对于两个正整数\(a\),\(b\),设 \(g ...
- oracle 导出表结构信息
直接贴sql: select cols.table_name 表名, cols.column_name 列名, cols.data_type 字段类型, cols.data_length 长度, co ...
- scroll与按钮的位置
<!doctype html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- 【MFC】设置窗口焦点
BOOL CTMSDlg::OnInitDialog() { ...... ...... //设置窗口焦点,注意return TRUE 改成 return FALSE GetDlgItem(IDC_E ...
- 标准C程序设计七---74
Linux应用 编程深入 语言编程 标准C程序设计七---经典C11程序设计 以下内容为阅读: <标准C程序设计>(第7版) 作者 ...