上一章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;
}
以上数组元素会以逆序输出。
评论前必须登录!
注册