Swiftのタイプオブジェクトから、動的にイニシャライザを呼ぶ方法
Swiftの列挙型がCountを返してくれないので、グローバル関数でループを回して数えるようなことを考えています。
protocol CountableIntEnum {
init?(rawValue: Int)
}
func enumCount(CountableEnumType: CountableIntEnum.Type) -> Int {
var count = 0
while CountableEnumType(rawValue: count) != nil {
count++
}
return count
}
enum Podium: Int, CountableIntEnum {
case First = 0
case Second
case Third
static let count = enumCount(Podium)
}
println(Podium.count)
上記のようなコードを記述すると、コーディング中は問題ないのですが ビルド時に
Command failed due to signal: Segmentation fault: 11
While emitting IR SIL function @_TF8EnumTest9enumCountFPMPS_16CountableIntEnum_Si for 'enumCount'
というエラーでビルドすることが出来ません。
クラスオブジェクトを変数に入れて、そのイニシャライザを呼ぶ正しい方法はどのようにすればよいでしょうか?
また、別の方法でもいいのですが、Foundationの力を借りずに動的にEnumType(rawValue: Int)を呼ぶ方法などはないでしょうか?