我希望能够循环遍历一个在Objective-C中定义的枚举类型,使用Swift进行操作。
现在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
什么是缺失的?如果可能的话,我该如何让这个枚举表现为一个序列?
for e in A ... C
,我得到了未解决的标识符A
,而对于for e in .A ... .C
,我得到了ClosedInterval<T>没有名为'Generator'的成员
。 - Druxfor eAsInt in Enum.A.rawValue ..< Enum.C.rawValue { let e = Enum(rawValue:eAsInt) /* ... */ }
- DruxallValues
的数组,其中包含了所有可能的值,并对Enum.allValues
进行迭代,这本质上就是@tommy的答案中最后一段所建议的方法。 - David Berry