Objective-C快速枚举用法 – Objective-C开发教程

【Objective-C快速枚举用法 – Objective-C开发教程】上一章Objective-C开发教程请查看:Objective-C泛型介绍和用法
Objective-C中的快速枚举就是使用for-in枚举集合或其它类,首先一个类如果具有for-in语法,那么该类需要遵循或实现NSFastEnumeration协议,该协议提供枚举的主要功能。
这里说说的枚举主要是针对OC中的集合类,OC主要的集合如下:

  • NSSet
  • NSArray
  • NSDictionary
  • NSMutableSet
  • NSMutableArray
  • NSMutableDictionary
枚举也分两种:顺序枚举和逆向枚举。
快速顺序枚举下面是使用语法:
for (classType variable in collectionObject ) { statements }

枚举数组或单元素集合时候,classType表示每个元素的数据类型,variable是集合中的每个元素,而collectionObject则是集合。
枚举字典的时候,classType表示每个key的数据类型,variable是key元素。
下面是一个快速顺序枚举的例子:
// 数组 NSArray *arr = [NSArray arrayWithObjects:@"iPhone", @"iOS", @"PPT", @"Hola", @"Aristotle", dic, nil]; // 数组快速遍历 得到每个元素 for (NSString *temp in arr) { NSLog(@"temp %@", temp); } // 字典 NSDictionary *dic = [NSDictionary dictionaryWithObjectsAndKeys:@"AA", @"aky", @"BB", @"bky", @"CC", @"cky", nil]; for (NSString *temp in dic) { NSLog(@"temp %@", temp); NSLog(@"%@ = %@", temp, [dic objectForKey:temp]); }

快速逆向枚举逆向枚举,是按照元素在集合中的储存顺序,以降序的方式进行枚举,使用语法如下:
for (classType variable in [collectionObject reverseObjectEnumerator] ) { statements }

下面是快速枚举中的reverseObjectEnumerator示例。
#import < Foundation/Foundation.h>int main() { NSArray *array = [[NSArray alloc] initWithObjects:@"string1", @"string2",@"string3",nil]; for(NSString *aString in [array reverseObjectEnumerator]) { NSLog(@"Value: %@",aString); }return 0; }

以上数组元素会以逆序输出。

    推荐阅读