我所要做的是創建一個協議擴展到從一個枚舉獲取原始值的數組獲得所有rawValues。例如說我有以下幾點:我如何寫一個協議擴展到從斯威夫特枚舉
enum TestType: String, EnumIteratable {
case unitTest = "Unit Test"
case uiTest = "UI Test"
}
class EnumIterator: NSObject {
class func iterateEnum<T: Hashable>(_: T.Type) -> AnyGenerator<T> {
var i = 0
return anyGenerator {
let next = withUnsafePointer(&i) { UnsafePointer<T>($0).memory }
return next.hashValue == i++ ? next : nil
}
}
class func getValues<T: Hashable>(_: T.Type) -> [T] {
let iterator = self.iterateEnum(T)
var returnArray = [T]()
for val in iterator {
returnArray.append(val)
}
return returnArray
}
}
我怎樣才能實現協議EnumIteratable,這樣我可以調用TestType.getRawValues(),並將它返回所有原始枚舉值的字符串數組?
謝謝!
也許使用MirrorType? –
@MarceloFabri鏡像不能工作的原因有幾個,其中之一就是你實際需要一個枚舉實例,我試圖避免。此外,枚舉不具有屬性:) – JonahGabriel