3

如何处理来自 JSON 的可编码结构的字段,该字段可以是空字符串或 int?我尝试使用任何但不符合可编码的数据类型。我认为如果它没有值,那么它会返回一个空字符串,否则,它会返回一个 int。我正在使用 Swift 4 和 XCode 9。提前致谢

4

1 回答 1

2

我真的建议更改该 Web 服务以一致地返回值(如果整数类型没有值,则不要为该键返回任何值)。

但是,如果您坚持这种设计,您将不得不编写自己的设计init(from:)来优雅地处理解析整数值的失败。例如:

struct Person: Codable {
    let name: String
    let age: Int?

    init(from decoder: Decoder) throws {
        let values = try decoder.container(keyedBy: CodingKeys.self)
        name = try values.decode(String.self, forKey: .name)
        do {
            age = try values.decode(Int.self, forKey: .age)
        } catch {
            age = nil
        }
    }

}

我还建议不要将0其用作“未提供整数值”的标记值。这就是选项的用途。

于 2017-09-24T16:53:44.643 回答