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

3
现在我需要一种方便的方式来获取枚举本身的名称?以下是一个示例。
enum SimpleEnum {
    case firstCase
    case secondCase
    case thirdCase
}
let simpleEnum: SimpleEnum = .firstCase
print("\(simpleEnum)") // return the "firstCase", but I want "SimpleEnum"

我知道以下代码可以工作。
enum SimpleEnum: CustomStringConvertible {
    case firstCase
    case secondCase
    case thirdCase

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

然而,我希望有一种通用的方法,而不是为每个枚举类型键入“SimpleEnum”。

type(of: simpleEnum) - Leo Dabus
就是这样。我不知道 type(of:) 的存在,因为它是一个运算符,Xcode 不会提示我。谢谢。 - Vitreous-Flower
1个回答

12

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

let simpleEnum: SimpleEnum = .firstCase
let enumName = String(describing: type(of: simpleEnum))

如果你想从一个类型中获取类型名称,可以这样做:

let enumName = String(describing: SimpleEnum.self)

type(of:) 正是我想要的。 - Vitreous-Flower

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接