我有一个Any?
类型的变量。我完全知道那个变量是enum: String
的类型。我如何获得rawValue之类的东西:
var somevar: Any? = someValue
(somevar as ?????).rawValue
最佳答案
假设您已在导入模块中的某个位置定义了此定义:
enum First: String {
case a, b
}
enum Second: String {
case c, d
}
在您的模块中,您应该执行以下操作:
protocol StringRawRepresentable {
var rawValue: String { get }
}
extension First: StringRawRepresentable {}
extension Second: StringRawRepresentable {}
这是你的问题:
var somevar: Any? = someValue
let result = (somevar as? StringRawRepresentable)?.rawValue
例如,如果
someValue == Second.c
,您将在"c"
中获得result
。这种方法可以使用,但是您必须对所有可能的类型进行
extend
编码,否则即使类型具有as?
属性,nil
强制转换也将导致rawValue: String
转换。关于ios - 如果element为Any,如何从枚举中获取rawValue?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/53632748/