我有一个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/

10-09 16:24