【发布时间】:2016-10-26 12:20:01
【问题描述】:
给定一个我无法更改的外部枚举:
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
}
}
}
有什么更好的方法?
【问题讨论】:
-
你能说出你想用这个枚举做什么吗?可能是XY-problem。
-
将值存储在 NSUserDefaults 中。如果您拥有它,您可以将其键入为 Int 或向其添加原始/关联值。也许这就是你所说的XY。我可以只存储枚举并将其读取为 AnyObject 并进行转换吗?
-
这篇文章可能不是你的问题的答案,但我建议这篇文章使用枚举更高级的方式和许多示例检查它appventure.me/2015/10/17/advanced-practical-enum-examples@FelixSFD 感谢您的建议:)