Я ищу способ получить значение перечисления из целого числа, используя его тип.Создание экземпляра перечисления из его типа
Вот пример того, что я хочу сделать;
enum TestEnum: Int {
case A = 0
case B = 1
case C = 2
}
func createEnum<T>(value: Int, type: T.Type) -> T? {
// Some magic here
}
let a = createEnum(0, type: TestEnum.self) // Optional(TestEnum.A)
let b = createEnum(1, type: TestEnum.self) // Optional(TestEnum.B)
let c = createEnum(2, type: TestEnum.self) // Optional(TestEnum.C)
let invalid = createEnum(3, type: TestEnum.self) // nil
Я знаю, что вы можете получить значение следующим образом:
let a = TestEnum(rawValue: 0) // Optional(TestEnum.A)
let b = TestEnum(rawValue: 1) // Optional(TestEnum.B)
let c = TestEnum(rawValue: 2) // Optional(TestEnum.C)
let invalid = TestEnum(rawValue: 4) // nil
Однако я хотел бы быть в состоянии «магазин» тип перечисления, чтобы создать (в данном случае, TestEnum
) и затем создайте его позже из значения, как показано в моем примере.
Есть ли способ сделать это в Swift?
Есть ли способ, чтобы ограничить RawRepresentable к одному, где RawValue является Int? –
@jackwilsdon: Да :) –
Большое вам спасибо! –