iOS学习笔记20131127-NSDictionary

来源:互联网 发布:有卖淘宝账号的吗 编辑:程序博客网 时间:2024/06/03 10:15

一、词典

1 词典(dictionary)是由键——对象对组成的数据集合。在与词典中超找单词定义一样,可以通过对象的键从Objective-c词典中获取需要的值(即那个对象)。词典中的键必须是单值的,通常他们是字符串,但也可以是其他对象类型。和键关联的值可以是任意对象类型,但不能是nil。
2

  1. //1.dictionary 创建一个空字典
  2. NSDictionary * dic = [NSDictionary dictionary];
  3.  
  4. //2. 创建并初始化
  5. // dictionaryWithObject:(id)forkey:(id)
  6. NSDictionary * dic1 = [NSDictionary dictionaryWithObject:@"Apple" forKey:@"Android"];
  7. NSLog(@"%@", dic1);
  8. //3.创建并返回一个字典。
  9. // dictionaryWithObjects:forkeys
  10. NSArray * keys = [NSArray arrayWithObjects:@"name", @"sex", @"age", nil];
  11. NSArray * values = [NSArray arrayWithObjects:@"Apple", @"女", [NSNumber numberWithInt:25], nil];
  12. NSDictionary * dic3 = [NSDictionary dictionaryWithObjects:values forKeys:keys];
  13. NSLog(@"%@", dic3);
  14. //4.使用键-对象对{key1,obj1}、{key2,obj2}...创建词典
  15. // dictionaryWithObjectsAndKeys
  16. NSDictionary * dic4 = [NSDictionary dictionaryWithObjectsAndKeys:
  17. @"apple", @"name",
  18. @25, @"age", nil];
  19. NSLog(@"%@", dic4);
  20. //5. @ 自面量
  21. NSDictionary * dic5 = @{@"name": @"Apple", @"age": @25, @"sex": @"女"};
  22. NSLog(@"@ = %@", dic5);
  23. // allkeys 返回一个数组包含词典中所有的键
  24. NSLog(@"allkeys:%@", [dic5 allKeys]);
  25. //allkeysForObject: 返回一个数组,包含所有对应到给定对象的关键字。
  26. NSArray * aa = @[@"name",@"apple",@"winphone",@"apple"];
  27. NSLog(@"aaaaaaa%@", [dic5 allKeysForObject:aa]);
  28. //allValues:返回一个数组包含词典中所有的值
  29. NSLog(@"allValues:%@", [dic5 allValues]);
  30. //objectForKey:返回指定 key 的 value,若没有这个 key 返回 nil.
  31. NSLog(@"%@", [dic5 objectForKey:@"name"]);
  32. //valueForKey 同样是返回指定 key 的 value。
  33. NSLog(@"%@", [dic5 valueForKey:@"name"]);
  34. //objectsForKeys:< #(NSArray *)#> notFoundMarker:< #(id)#>
  35. // 根据给定的键值数组返回对应的值,如果找不到则返回 notFoundMarker
  36. NSLog(@"%@", [dic5 objectsForKeys:@[@"Name", @"Age", @"Sex"] notFoundMarker:@"NOT"]);
  37. //count:返回字典中的记录数
  38. NSLog(@"count:%zi", [dic5 count]);
  39. //遍历字典中的key
  40. NSLog(@"遍历字典\n\n");
  41. //迭代器遍历
  42. NSEnumerator * keyEnum = [dic5 keyEnumerator];
  43. id key = nil;
  44. while (key = [keyEnum nextObject]) {
  45. NSLog(@"%@", key);
  46. }
  47. //快速遍历
  48. for (id key in dic5) {
  49. NSLog(@"%@", key);
  50. }
  51. //遍历字典中的value
  52. for (id key in dic5) {
  53. NSLog(@"%@", [dic5 valueForKey:key]);
  54. }
  55. //block遍历
  56. [dic5 enumerateKeysAndObjectsUsingBlock:
  57. ^(id key, id obj, BOOL *stop) {
  58. NSLog(@"%@ = %@", key, values);
  59. }];
  60. //可变字典
  61. NSMutableDictionary * dic2 = [NSMutableDictionary dictionary];
  62. //setObject: forKey: 添加value与key,如果key存在则替换该值
  63. [dic2 setValue:@"HH" forKey:@"100"];
  64. [dic2 setValue:@"kj" forKey:@"哈哈"];
  65. NSLog(@"%@", dic2);
  66. //removeObjectForKey 删除词典中指定key对应的记录
  67. [dic2 removeObjectForKey:@"100"];
  68. NSLog(@"%@", dic2);
  69. //removeAllObjects 删除词典中的所有记录
  70. [dic2 removeAllObjects];
  71. NSLog(@"%@", dic2);
  72. NSDictionary * diction1 = [NSDictionary dictionaryWithObjectsAndKeys:
  73. @"Apple", @"Name",
  74. @15, @"Age",nil];
  75. NSDictionary * diction2 = [NSDictionary dictionaryWithObjectsAndKeys:
  76. @"Android", @"Name",
  77. @28, @"Age",nil];
  78. //isEqualToDictionary 比较两个字典
  79. if([diction1 isEqualToDictionary:diction2]){
  80. NSLog(@"diction1 equal diction2");
  81. }else{
  82. NSLog(@"diction1 not equal diction2");
  83. }
  84. // writeToFile 把字典写入文件(xml格式)
  85. NSString * path = @"/Users/simman/diction1.xml";
  86. [diction1 writeToFile:path atomically:YES];
  87. //dictionaryWithContentsOfFile 读取一个文件返回给新的字典对象
  88. NSDictionary *newDic = [NSDictionary dictionaryWithContentsOfFile:path];
转自: Objective-c学习笔记06——字典与集合
原创粉丝点击