TimeInterval 类型的编码和解码枚举
Encoding and decoding enum of type TimeInterval
给定以下枚举:
enum TimerType: TimeInterval, Codable {
case timer, `break`
var rawValue: TimeInterval {
switch self {
case .timer: return 60 * 25
case .break: return 60 * 5
}
}
enum CodingKeys: String, CodingKey {
case timer = "timer"
case `break` = "break"
}
}
我想将其值保存在使用此枚举的结构中 json,如下所示:
{
"type": "timer"
}
但它实际做的是
{
"type": 1500
}
虽然我可以看到它实际上保存了 Double
值(因为它的类型 TimerInterval
是 Double 的类型别名),但我无法弄清楚如何使用它们的名称进行编码和解码.
有什么提示吗?
由于您对时间值进行了硬编码,我建议切换到基于字符串的枚举:
enum TimerType: String, Codable {
case timer, `break`
var timerValue: TimeInterval {
switch self {
case .timer: return 60 * 25
case .break: return 60 * 5
}
}
}
给定以下枚举:
enum TimerType: TimeInterval, Codable {
case timer, `break`
var rawValue: TimeInterval {
switch self {
case .timer: return 60 * 25
case .break: return 60 * 5
}
}
enum CodingKeys: String, CodingKey {
case timer = "timer"
case `break` = "break"
}
}
我想将其值保存在使用此枚举的结构中 json,如下所示:
{
"type": "timer"
}
但它实际做的是
{
"type": 1500
}
虽然我可以看到它实际上保存了 Double
值(因为它的类型 TimerInterval
是 Double 的类型别名),但我无法弄清楚如何使用它们的名称进行编码和解码.
有什么提示吗?
由于您对时间值进行了硬编码,我建议切换到基于字符串的枚举:
enum TimerType: String, Codable {
case timer, `break`
var timerValue: TimeInterval {
switch self {
case .timer: return 60 * 25
case .break: return 60 * 5
}
}
}