无法在 json 解析时使用 Codable 概念 swift 4 管理 nil



我想用一些空字段解析一些数据如果字符串的值为 null,则对于所有数据类型,它应该替换为"(空白(。如果值为零,则我想设置变量的默认值。在 JSON 中,我正在获得啤酒厂空值。

例如 JSON

{
    "name": "Endeavor",
    "abv": 8.9,
    "brewery": null,
    "style": "ipa"
}

我创建了这样的模型类。

struct Beer: Codable {
    var name: String?
    var brewery: String?
    var style: String?
}

我想将给定的 json 解码为 Beer 类,那么如何使用默认值管理 Nil?

模型中的可选值完全没问题。

在解析 JSON 时,您可以:

  1. 使用 Swift 合并运算符??

    Brewery = someOptionalValue ?? ""

  2. 围绕可选创建自己的类别:

    extension Optional { func getOrElse<T>(defaultValue: T) -> T { if let value = self? { return value as T } else { return defaultValue } } }

    并将其用作Brewery = someOptionalValue.getOrElse("")

  3. 或者你可以简单地使用三元运算符

编辑1:根据评论

按如下所示修改模型并访问breweryComputed而不是brewery

struct Beer: Codable {
var name: String?
var brewery: String?
var style: String?
var breweryComputed : String {
    get{
        return (self.brewery ?? "")
    }
  }
}

相关内容

  • 没有找到相关文章

最新更新