在 Swift 中循环遍历 Objective-C 枚举?

Looping over Objective-C enum in Swift?

我想循环使用 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

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

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

If the first enumerator has no =, the value of its enumeration constant is 0. Each subsequent enumerator with no = defines its enumeration constant as the value of the constant expression obtained by adding 1 to the value of the previous enumeration constant.

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

for enumerationValue in A...C

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

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

然后您可能不得不创建一个 A、B、C 和 D 的文字数组,并对其进行枚举。