黑马程序员技术交流社区

标题: 关于数组和字典遍历的方法总结 [打印本页]

作者: 马丁    时间: 2015-4-22 15:15
标题: 关于数组和字典遍历的方法总结
总共四种方法,欢迎交流。。。。:):)

  1. //
  2. //  main.m
  3. //  NSArray-NSDictionary遍历

  4. #import <Foundation/Foundation.h>
  5. int main()
  6. {
  7.     // 遍历字典的方法:1.1 1.2 2.1 2.2(错误) 3.0 4.0
  8.    
  9.     NSDictionary *dict = @{@"name": @"jiale", @"address": @"beijing",@"qq": @"630655214"};
  10.    
  11. //  注意最好不要用下面的value和key作为关键字。

  12.     // 1.1 一般遍历(for循环手动索引键)
  13. /*
  14.     NSArray *allKeys = dict.allKeys;                // 获得所有的键值作为索引。
  15.     NSString *value;                                // id 也可以。  = [NSString string]也可以。
  16.    
  17.     for(NSInteger i = 0; i < allKeys.count; i++)    // 注意可以用点语法,说明他们是属性值。
  18.     {
  19.         value = [dict objectForKey:allKeys[i]];
  20.         NSLog(@"%@   %@", allKeys[i], value);
  21.     }
  22. */

  23.     // 1.2 一般遍历(for循环手动索引键值)
  24. /*
  25.     NSArray *allValues = dict.allValues;
  26.     NSArray *key;                                           //注意是数组,对应下面的allKeysForObject。id 也可以。 = [NSArray array]也可以。。
  27.    
  28.     for(NSInteger i = 0; i < allValues.count; i++)
  29.     {
  30.         key = [dict allKeysForObject:allValues[i]];         // 因为是数组,所以取出它的首元素。
  31.         NSLog(@"%@   %@", key[0], allValues[i]);
  32.     }
  33. */
  34.    
  35.     // 2.1 快速遍历(for循环遍历键)

  36. /*    for(id key in dict)
  37.     {
  38.         id value = [dict objectForKey:key];                // 通过键得到键值。
  39.         NSLog(@"%@   %@", value, key);
  40.     }
  41. */
  42.    
  43.     // 2.2 快速遍历(for循环遍历键值,该方法错误,只能遍历键)
  44. /*
  45.     for(id obj in dict)
  46.     {
  47.         NSArray *key = [dict allKeysForObject:obj];
  48.         NSLog(@"%@   ", obj);
  49.     }
  50. */
  51.    
  52.     // 3.0 利用block超快速遍历,要谨记格式,其返回值为空。
  53. /*
  54.     [dict enumerateKeysAndObjectsUsingBlock:^(id key, id value, BOOL *stop) {
  55.         NSLog(@"%@  %@", key, value);
  56.     }];
  57. */

  58.     // 4.0 利用枚举器遍历(索引得到键,不能得到键值,同方法2.2一个道理。)
  59. /*
  60.     NSEnumerator *enumerator = [dict keyEnumerator]; // 相应的,nsarray有-objectEnumerator方法。
  61.     id key;
  62.    
  63.     while(key = [enumerator nextObject])            // 注意不要漏了此方法,NSEnumerator 只有一个属
  64.     {                                               // 性allObjects 和一个方法nextObject.
  65.         NSLog(@"%@  %@", key, [dict objectForKey:key]);
  66.     }
  67. */
  68.    
  69.    
  70.     // 遍历数组的方法:

  71.     NSArray *arr = @[@"name", @"jiale", @"address", @"beijing",@"qq", @"630655214"];

  72.    
  73.     // 1.0 for循环遍历。
  74. /*
  75.     for (int i = 0; i < arr.count; i++) {
  76.         NSLog(@"%d   %@", i, arr[i]);
  77.     }
  78. */
  79.     // 2.0 快速遍历。
  80. /*
  81.     for (id obj in arr) {
  82.         NSLog(@"%d  %@", [arr indexOfObject:obj], obj);
  83.     }
  84. */
  85.     // 3.0 利用block遍历。
  86. /*
  87.     [arr enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {
  88.         NSLog(@"%d  %@", idx, obj);
  89.     }];
  90. */
  91.     // 4.0 利用nsenumerator枚举器遍历。
  92.    
  93.     NSEnumerator *enumerator = [arr objectEnumerator];
  94.     id obj;
  95.    
  96.     while (obj = [enumerator nextObject]) {
  97.         NSLog(@"%d  %@", [arr indexOfObject:obj], obj);

  98.     }
  99.     return 0;
  100. }

复制代码

作者: 透亮心情    时间: 2015-4-22 17:30
这都oc了,我c都还没有看完!!!!!
作者: lvzhehappy    时间: 2015-4-22 17:31
给你顶一个




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2