在Swift中循环使用Objective-C枚举?

时间:2015-01-26 19:55:40

标签: objective-c swift for-loop enums

我想循环使用Swift最初在Objective-C中定义的enum

Objective-C定义现在如下:

typedef NS_ENUM(NSInteger, Enum) { A, B, C };

如果我尝试for e in Enum,我会从Swift编译器(在Xcode 6.1.1中)收到此错误消息:

Type 'Enum.Type' does not conform to protocol Sequence.Type

缺少什么?如果可能的话,我怎么能让这个枚举表现为一个序列?

1 个答案:

答案 0 :(得分:2)

在C中,因此在Objective-C中,enum被定义为具有此行为:

  

如果第一个枚举器没有=,则枚举的值为   常量为0.每个后续的枚举器都没有=来定义它   枚举常量作为获得的常量表达式的值   通过在前一个枚举常量的值上加1来实现。

所以在你的情况下你可以这样做:

for enumerationValue in A...C

如果enum更复杂,那么您需要做一些更复杂的事情。 C通常不会对包括枚举在内的任何内容提供内省,所以如果它更像是:

typedef NS_ENUM(NSInteger, Enum) { A, B = 26, C, D = -9 };

然后你可能需要创建一个A,B,C和D的文字数组,并通过它进行枚举。