个性化阅读
专注于IT技术分析

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;
}

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

赞(0)
未经允许不得转载:srcmini » Objective-C快速枚举用法 – Objective-C开发教程

评论 抢沙发

评论前必须登录!