读书人

Objective-C语法之NSDictionary跟NSMu

发布时间: 2013-07-04 11:45:40 作者: rapoo

Objective-C语法之NSDictionary和NSMutableDictionary

Java有Map,可以把数据以键值对的形式储存起来,取值的时候通过key就可以直接拿到对应的值,方便快捷。在Objective-C语言中,词典就是做这样的事情的,和NSArray一样,一个词典对象也能保存不同类型的值,词典也分别有不可变词典和可变的词典(NSDictionary与NSMutableDictionary),前者是线程安全的,后者不是 。

Objective-C语法之NSDictionary跟NSMutableDictionary

1、不可变词典NSDictionary的主要用法:

[NSDictionary dictionaryWithObjectsAndKeys:..] : 使用键值对直接创建词典对象,结尾必需使用nil标志结束。

[dictionary count]: 得到词典的键值对数量。
[dictionary keyEnumerator]: 将词典的所有key储存在NSEnumerator中,类似于Java语言中的迭代器
[dictionary objectEnumerator]: 将词典的所有value储存在NSEnumerator中
[dictionary objectForKey:key]: 通过传入key对象可以拿到当前key对应储存的值。

代码示例:

?

[cpp]?view plaincopy
  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. }??

打印结果;

[cpp]?view plaincopy
  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] 42012-07-09 16:37:07.042 objectiveC[3053:403] key:age2012-07-09 16:37:07.043 objectiveC[3053:403] key:性别2012-07-09 16:37:07.043 objectiveC[3053:403] key:name2012-07-09 16:37:07.044 objectiveC[3053:403] key:名次2012-07-09 16:37:07.044 objectiveC[3053:403] value:252012-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/原创

读书人网 >移动开发

热点推荐