繁体   English   中英

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
        }
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM