`
dcj3sjt126com
  • 浏览: 1823157 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Objective-C语法之NSDictionary和NSMutableDictionary

    博客分类:
  • IOS
阅读更多

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对应储存的值。

代码示例:

 

  1. int main(int argc, const char * argv[])  
  2. {  
  3.     @autoreleasepool {  
  4.         NSDictionary *dictionary = [NSDictionary dictionaryWithObjectsAndKeys:@"25",@"age",@"张三",@"name",@"男",@"性别",nil];  
  5.         NSLog(@"%lu", [dictionary count]);  
  6.         NSEnumerator *enumeratorKey = [dictionary keyEnumerator];  
  7.         for (NSObject *object in enumeratorKey) {  
  8.             NSLog(@"key:%@", object);  
  9.         }  
  10.           
  11.         NSEnumerator *enumeratorObject = [dictionary objectEnumerator];  
  12.         for (NSObject *object in enumeratorObject) {  
  13.             NSLog(@"value:%@", object);  
  14.         }  
  15.         NSLog(@"key name的值是:%@", [dictionary objectForKey:@"name"]);  
  16.           
  17.     }  
  18.     return 0;  
  19. }  

打印结果;

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的数据

代码示例:

 

  1. int main(int argc, const char * argv[])  
  2. {  
  3.     @autoreleasepool {  
  4.         NSMutableDictionary *dictionary = [NSMutableDictionary dictionaryWithObjectsAndKeys:@"25",@"age",@"张三",@"name",@"男",@"性别",nil];  
  5.         [dictionary setObject:@"30名" forKey:@"名次"];  
  6.           
  7.         NSLog(@"%lu", [dictionary count]);  
  8.         NSEnumerator *enumeratorKey = [dictionary keyEnumerator];  
  9.         for (NSObject *object in enumeratorKey) {  
  10.             NSLog(@"key:%@", object);  
  11.         }  
  12.           
  13.         NSEnumerator *enumeratorObject = [dictionary objectEnumerator];  
  14.         for (NSObject *object in enumeratorObject) {  
  15.             NSLog(@"value:%@", object);  
  16.         }  
  17.         NSLog(@"key 名次的值是:%@", [dictionary objectForKey:@"名次"]);  
  18.         [dictionary removeObjectForKey:@"名词"];  
  19.         NSLog(@"%lu", [dictionary count]);  
  20.     }  
  21.     return 0;  
  22. }  

 

打印结果:

 

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名

 

著作权声明:本文由http://blog.csdn.net/totogo2010/原创

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics