如何在Swift中获取枚举的名称而不是案例的名称?

16 浏览
0 Comments

如何在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"。

0
0 Comments

问题的原因是想要获取枚举类型的名称而不是枚举值的名称。解决方法是使用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:)方法,可以方便地获取所需的结果。

0