如何为没有它的枚举添加原始值

时间:2016-10-26 12:20:01

标签: swift enums

鉴于外部枚举,我无法改变:

enum MyEnum {
  case first
  case second
}

我如何才能最好地使这个RawRepresentable,或者至少可以转换为Int(或String)?

我可以写一个模仿rawValue的扩展,但这感觉很笨拙:

extension MyEnum {

    enum EnumError: Error {
        case invalidValue
    }

    init (rawValue: Int) throws {
        switch rawValue {
        case 0:
            self = .first
        case 1:
            self = .second
        default:
            throw EnumError.invalidValue
        }
    }

    var rawValue: Int {
        switch self {
        case .first:
            return 0
        case .second:
            return 1
        }
    }
}

有更好的方法吗?感觉应该有一个更好的解决方案...

1 个答案:

答案 0 :(得分:2)

这很有效,只是测试了它。希望这会帮助你!

enum MyEnum {
    case first
    case second
}

extension MyEnum {
    enum MyExtendedEnum:Int {
        case first
        case second
    }
}

无论如何它的代码更清晰一些,现在你的电话就是:

let myVar = MyEnum.MyExtendedEnum.RawValue()