私がしようとしているのは、列挙から生の値の配列をフェッチするプロトコル拡張を作成することです。たとえば、私は次のことを持っていると言う:Swift enumからすべての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
}
}
どのように私はTestType.getRawValuesを呼び出すことができるように(プロトコルEnumIteratableを実装)と、それはすべての生列挙値の文字列配列を返すことができますか?
ありがとうございます!
おそらくMirrorTypeを使用していますか? –
@MarceloFabriミラーはいくつかの理由で機能しません。その1つは、実際には、私が避けようとしているenumのインスタンスが必要なことです。また、列挙型はプロパティを持っていません:) – JonahGabriel