我想循环使用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
缺少什么?如果可能的话,我怎么能让这个枚举表现为一个序列?
答案 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的文字数组,并通过它进行枚举。