总共四种方法,欢迎交流。。。。:):)
- //
- // main.m
- // NSArray-NSDictionary遍历
- #import <Foundation/Foundation.h>
- int main()
- {
- // 遍历字典的方法:1.1 1.2 2.1 2.2(错误) 3.0 4.0
-
- NSDictionary *dict = @{@"name": @"jiale", @"address": @"beijing",@"qq": @"630655214"};
-
- // 注意最好不要用下面的value和key作为关键字。
- // 1.1 一般遍历(for循环手动索引键)
- /*
- NSArray *allKeys = dict.allKeys; // 获得所有的键值作为索引。
- NSString *value; // id 也可以。 = [NSString string]也可以。
-
- for(NSInteger i = 0; i < allKeys.count; i++) // 注意可以用点语法,说明他们是属性值。
- {
- value = [dict objectForKey:allKeys[i]];
- NSLog(@"%@ %@", allKeys[i], value);
- }
- */
- // 1.2 一般遍历(for循环手动索引键值)
- /*
- NSArray *allValues = dict.allValues;
- NSArray *key; //注意是数组,对应下面的allKeysForObject。id 也可以。 = [NSArray array]也可以。。
-
- for(NSInteger i = 0; i < allValues.count; i++)
- {
- key = [dict allKeysForObject:allValues[i]]; // 因为是数组,所以取出它的首元素。
- NSLog(@"%@ %@", key[0], allValues[i]);
- }
- */
-
- // 2.1 快速遍历(for循环遍历键)
- /* for(id key in dict)
- {
- id value = [dict objectForKey:key]; // 通过键得到键值。
- NSLog(@"%@ %@", value, key);
- }
- */
-
- // 2.2 快速遍历(for循环遍历键值,该方法错误,只能遍历键)
- /*
- for(id obj in dict)
- {
- NSArray *key = [dict allKeysForObject:obj];
- NSLog(@"%@ ", obj);
- }
- */
-
- // 3.0 利用block超快速遍历,要谨记格式,其返回值为空。
- /*
- [dict enumerateKeysAndObjectsUsingBlock:^(id key, id value, BOOL *stop) {
- NSLog(@"%@ %@", key, value);
- }];
- */
-
- // 4.0 利用枚举器遍历(索引得到键,不能得到键值,同方法2.2一个道理。)
- /*
- NSEnumerator *enumerator = [dict keyEnumerator]; // 相应的,nsarray有-objectEnumerator方法。
- id key;
-
- while(key = [enumerator nextObject]) // 注意不要漏了此方法,NSEnumerator 只有一个属
- { // 性allObjects 和一个方法nextObject.
- NSLog(@"%@ %@", key, [dict objectForKey:key]);
- }
- */
-
-
- // 遍历数组的方法:
- NSArray *arr = @[@"name", @"jiale", @"address", @"beijing",@"qq", @"630655214"];
-
-
- // 1.0 for循环遍历。
- /*
- for (int i = 0; i < arr.count; i++) {
- NSLog(@"%d %@", i, arr[i]);
- }
- */
- // 2.0 快速遍历。
- /*
- for (id obj in arr) {
- NSLog(@"%d %@", [arr indexOfObject:obj], obj);
- }
- */
- // 3.0 利用block遍历。
- /*
- [arr enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {
- NSLog(@"%d %@", idx, obj);
- }];
- */
- // 4.0 利用nsenumerator枚举器遍历。
-
- NSEnumerator *enumerator = [arr objectEnumerator];
- id obj;
-
- while (obj = [enumerator nextObject]) {
- NSLog(@"%d %@", [arr indexOfObject:obj], obj);
- }
- return 0;
- }
复制代码 |
|