11、Objective-C语法之NSDictionary和NSMutableDictionary
来源:互联网 发布:python和java待遇 编辑:程序博客网 时间:2024/05/16 08:25
Java有Map,可以把数据以键值对的形式储存起来,取值的时候通过key就可以直接拿到对应的值,方便快捷。在Objective-C语言中,词典就是做这样的事情的,和NSArray一样,一个词典对象也能保存不同类型的值,词典也分别有不可变词典和可变的词典(NSDictionary与NSMutableDictionary),前者是线程安全的,后者不是 。
1、不可变词典NSDictionary的主要用法:
[NSDictionary dictionaryWithObjectsAndKeys:..] : 使用键值对直接创建词典对象,结尾必需使用nil标志结束。
[dictionary count]: 得到词典的键值对数量。
[dictionary keyEnumerator]: 将词典的所有key储存在NSEnumerator中,类似于Java语言中的迭代器
[dictionary objectEnumerator]: 将词典的所有value储存在NSEnumerator中
[dictionary objectForKey:key]: 通过传入key对象可以拿到当前key对应储存的值。
代码示例:
int main(int argc, const char * argv[]){ @autoreleasepool { NSDictionary *dictionary = [NSDictionary dictionaryWithObjectsAndKeys:@"25",@"age",@"张三",@"name",@"男",@"性别",nil]; NSLog(@"%lu", [dictionary count]); NSEnumerator *enumeratorKey = [dictionary keyEnumerator]; for (NSObject *object in enumeratorKey) { NSLog(@"key:%@", object); } NSEnumerator *enumeratorObject = [dictionary objectEnumerator]; for (NSObject *object in enumeratorObject) { NSLog(@"value:%@", object); } NSLog(@"key name的值是:%@", [dictionary objectForKey:@"name"]); } return 0;}
打印结果;
2012-07-09 16:31:18.276 objectiveC[2965:403] 3
2012-07-09 16:31:18.282 objectiveC[2965:403] key:age
2012-07-09 16:31:18.282 objectiveC[2965:403] key:name
2012-07-09 16:31:18.283 objectiveC[2965:403] key:性别
2012-07-09 16:31:18.283 objectiveC[2965:403] value:25
2012-07-09 16:31:18.284 objectiveC[2965:403] value:张三
2012-07-09 16:31:18.284 objectiveC[2965:403] value:男
2012-07-09 16:31:18.285 objectiveC[2965:403] key name的值是:张三
2、可变的词典NSMutableDictionary。
NSMutableDictionary是NSDictionary的子类,所以继承了NSDictionary的方法, 以上的代码对NSMutableDictionary来说完全可用。我们试试不一样的地方
增删键值数据。
[dictionary setObject: forKey:] :向可变的词典动态的添加数据
[dictionary removeAllObjects..] : 删除掉词典中的所有数据。
[dictionary removeObjectForKey..] :删除掉词典中指定key的数据
代码示例:
int main(int argc, const char * argv[]){ @autoreleasepool { NSMutableDictionary *dictionary = [NSMutableDictionary dictionaryWithObjectsAndKeys:@"25",@"age",@"张三",@"name",@"男",@"性别",nil]; [dictionary setObject:@"30名" forKey:@"名次"]; NSLog(@"%lu", [dictionary count]); NSEnumerator *enumeratorKey = [dictionary keyEnumerator]; for (NSObject *object in enumeratorKey) { NSLog(@"key:%@", object); } NSEnumerator *enumeratorObject = [dictionary objectEnumerator]; for (NSObject *object in enumeratorObject) { NSLog(@"value:%@", object); } NSLog(@"key 名次的值是:%@", [dictionary objectForKey:@"名次"]); [dictionary removeObjectForKey:@"名词"]; NSLog(@"%lu", [dictionary count]); } return 0;}
打印结果:
2012-07-09 16:37:07.037 objectiveC[3053:403] 4
2012-07-09 16:37:07.042 objectiveC[3053:403] key:age
2012-07-09 16:37:07.043 objectiveC[3053:403] key:性别
2012-07-09 16:37:07.043 objectiveC[3053:403] key:name
2012-07-09 16:37:07.044 objectiveC[3053:403] key:名次
2012-07-09 16:37:07.044 objectiveC[3053:403] value:25
2012-07-09 16:37:07.045 objectiveC[3053:403] value:男
2012-07-09 16:37:07.045 objectiveC[3053:403] value:张三
2012-07-09 16:37:07.046 objectiveC[3053:403] value:30名
2012-07-09 16:37:07.046 objectiveC[3053:403] key 名次的值是:30名
- Objective-C语法之NSDictionary和NSMutableDictionary
- Objective-C语法之NSDictionary和NSMutableDictionary
- Objective-C语法之NSDictionary和NSMutableDictionary
- Objective-C语法之NSDictionary和NSMutableDictionary
- Objective-C语法之NSDictionary和NSMutableDictionary
- Objective-C语法之NSDictionary和NSMutableDictionary
- Objective-C语法之NSDictionary和NSMutableDictionary
- Objective-C语法之NSDictionary和NSMutableDictionary
- Objective-C语法之NSDictionary和NSMutableDictionary
- Objective-C语法之NSDictionary和NSMutableDictionary
- Objective-C语法之NSDictionary和NSMutableDictionary
- 11、Objective-C语法之NSDictionary和NSMutableDictionary
- 9,Objective-C语法之NSDictionary和NSMutableDictionary
- Objective-C 语法之词典对象(NSDictionary/NSMutableDictionary)
- Objective-C语法-字典NSDictionary和可变字典NSMutableDictionary
- Objective-c - NSDictionary(NSMutableDictionary)
- Objective-C----NSDictionary、NSMutableDictionary
- Objective-c 字典对象 (NSDictionary 和 NSMutableDictionary )
- go语言的new和make
- 10、Objective-C语法之NSArray和NSMutableArray
- Codeforces Round #252 (Div. 2)-C,D
- Linux下安装Nginx详细图解教程
- 数据结构实验之链表三:链表的逆置 (SDUT 2118)
- 11、Objective-C语法之NSDictionary和NSMutableDictionary
- java的抽象类和抽象方法(注意查看如何调用抽象类中的非抽象方法)
- 闲暇时间看了下DHT网络
- JS中单引号/双引号以及外部js引入的一些问题
- shell 内建命令 exec
- 遍历二叉树的各种操作(非递归遍历)
- 综合思路养成记之税法怎么学
- 企业业务流程管理软件功能简介
- 数据结构实验之链表四:有序链表的归并(SDUT 2119)