如何在swift中获取枚举的名称而不是case的名称?

Vit*_*wer 1 syntax swift

现在我需要一种方便的方法来获取枚举本身的名称?这是一个例子.

enum SimpleEnum {
    case firstCase
    case secondCase
    case thirdCase
}
let simpleEnum: SimpleEnum = .firstCase
print("\(simpleEnum)") // return the "firstCase", but I want "SimpleEnum"
Run Code Online (Sandbox Code Playgroud)

我知道以下代码可行.

enum SimpleEnum: CustomStringConvertible {
    case firstCase
    case secondCase
    case thirdCase

    var description: String { return "SimpleEnum" }
}
let simpleEnum: SimpleEnum = .firstCase
print("\(simpleEnum)") // Ok, it return "SimpleEnum"
Run Code Online (Sandbox Code Playgroud)

但是,我只想要一种通用方式,而不是为每个枚举键入"SimpleEnum".

Swe*_*per 8

您可以通过调用从枚举案例中获取类型对象type(of:).然后,您可以通过调用将其转换为字符串String.init(describing:):

let simpleEnum: SimpleEnum = .firstCase
let enumName = String(describing: type(of: simpleEnum))
Run Code Online (Sandbox Code Playgroud)

如果要从类型中获取类型名称,可以执行以下操作:

let enumName = String(describing: SimpleEnum.self)
Run Code Online (Sandbox Code Playgroud)