我有以下列举。
enum EstimateItemStatus: Printable {
case Pending
case OnHold
case Done
var description: String {
switch self {
case .Pending: return "Pending"
case .OnHold: return "On Hold"
case .Done: return "Done"
}
}
init?(id : Int) {
switch id {
case 1:
self = .Pending
case 2:
self = .OnHold
case 3:
self = .Done
default:
return nil
}
}
}
我需要将所有原始值存储为字符串数组(例如["Pending", "On Hold", "Done"]
)。
我将此方法添加到枚举中。
func toArray() -> [String] {
var n = 1
return Array(
GeneratorOf<EstimateItemStatus> {
return EstimateItemStatus(id: n++)!.description
}
)
}
但我收到以下错误。
找不到类型’GeneratorOf’的初始化程序,该初始化程序接受类型’(()-> _)’的参数列表
有没有更简单,更好或更优雅的方式来做到这一点?
有一个CaseIterable
协议:
enum EstimateItemStatus: String, CaseIterable {
case pending = "Pending"
case onHold = "OnHold"
case done = "Done"
init?(id : Int) {
switch id {
case 1: self = .pending
case 2: self = .onHold
case 3: self = .done
default: return nil
}
}
}
for value in EstimateItemStatus.allCases {
print(value)
}
不,您无法查询enum
包含的值。看到这篇文章。您必须定义一个列出所有值的数组。还可以在“如何以数组形式获取所有枚举值”中查看Frank Valbuena的解决方案。
enum EstimateItemStatus: String {
case Pending = "Pending"
case OnHold = "OnHold"
case Done = "Done"
static let allValues = [Pending, OnHold, Done]
init?(id : Int) {
switch id {
case 1:
self = .Pending
case 2:
self = .OnHold
case 3:
self = .Done
default:
return nil
}
}
}
for value in EstimateItemStatus.allValues {
print(value)
}
问题内容: 我遇到了这个问题,我不知道需要迭代其实际值的实际类型。 任何想法如何从enumValue中提取其可能的值? 问题答案:
我使用Enum4库创建enum类,如下所示: 我想在某处打印作为列表。如何实现这一点?
给定类型脚本枚举: 我想在一个数组中得到它的所有值,如下所示: 但当我和 我得到奇怪的数组组成的索引和值: 为什么会出现这种情况?我如何才能只获取值?
假设我有以下代码: 是否有一种方法可以得到下面的数组?
问题内容: 将枚举元素的名称获取为s 数组的最简单和/或最短的方法是什么? 我的意思是,例如,如果我有以下枚举: 该方法将返回数组。 问题答案: 这是任何班级的一线客: Java 8之前的版本仍然是单一的,尽管不太优雅: 您会这样称呼: 如果您只想为硬编码的枚举类提供一些简单的方法: