如何在Swift中获取枚举的名称而不是案例的名称?
如何在Swift中获取枚举的名称而不是案例的名称?
现在我需要一种方便的方法来获取枚举本身的名称?下面是一个例子。
enum SimpleEnum {
case firstCase
case secondCase
case thirdCase
}
let simpleEnum: SimpleEnum = .firstCase
print("\(simpleEnum)") // 返回"firstCase",但我想要"SimpleEnum"
我知道以下代码可以工作。
enum SimpleEnum: CustomStringConvertible {
case firstCase
case secondCase
case thirdCase
var description: String { return "SimpleEnum" }
}
let simpleEnum: SimpleEnum = .firstCase
print("\(simpleEnum)") // 好的,它返回"SimpleEnum"
但是,我只想要一种通用的方法,而不是为每个枚举键入"SimpleEnum"。
问题的原因是想要获取枚举类型的名称而不是枚举值的名称。解决方法是使用Swift中的一些方法来获取类型对象并将其转换为字符串。
首先,可以通过调用type(of:)
方法来获取枚举值的类型对象。然后,可以调用String.init(describing:)
方法将类型对象转换为字符串。
例如,假设有一个名为SimpleEnum
的枚举类型,并且已经定义了一个枚举值.firstCase
。可以按照以下方式获取枚举类型的名称:
let simpleEnum: SimpleEnum = .firstCase
let enumName = String(describing: type(of: simpleEnum))
如果想要从类型本身获取类型名称,可以按照以下方式操作:
let enumName = String(describing: SimpleEnum.self)
通过使用type(of:)
方法,可以方便地获取所需的结果。