swift - 如何快速获取枚举名称而不是案例名称?

标签 swift syntax

<分区>

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

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:) 从枚举案例中获取类型对象。然后,您可以通过调用 String.init(describing:) 将其转换为字符串:

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

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

let enumName = String(describing: SimpleEnum.self)

关于swift - 如何快速获取枚举名称而不是案例名称?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43045592/

相关文章:

swift - HealthKit 授权在 iOS 10 beta 1 中因未处理的 NSException 而崩溃

Swift 找不到正确的类型

swift - 从数据库读取时发现 nil

java - Java 中的日期问题

ruby - 测试多个变量是否具有相同值的简单方法,ruby

objective-c - IOS 设置属性语法问题

ios - 在 swift 3 中传递地址时在 map 中获取 "Cannot provide direction"?

ios - 使用 Swift 检索核心数据

syntax - "field ` 0 ` of struct is private"pub 结构属性错误

python - 字典、列表或集合末尾的额外逗号在 Python 中有什么特殊含义吗?