ios - json 解析时无法使用 Codable Concept swift 4 管理 nil

标签 ios json swift swift4 codable

我想解析一些带有空字段的数据如果字符串的值为空,则应将其替换为“” (空白)同样适用于所有数据类型。如果该值为零,那么我想设置变量的默认值。在 JSON 中,我得到的啤酒厂值为 null。

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 ?? "")
    }
  }
}

关于ios - json 解析时无法使用 Codable Concept swift 4 管理 nil,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47326035/

相关文章:

ios - iOS8 中的 CGAffineTransform 动画看起来与 iOS7 中的不同

javascript - 使用带有 javascript 的 FourSquare API 访问 field 提示

swift - UINavigationBar 颜色褪色,并且颜色不正确

ios - 锁定屏幕时扫描蓝牙设备失败(使用 ibeacon)

ios - 由于内存错误 iOS 终止?

javascript - 在iOS中阻止的Webview中的iframe内重定向

ios - 如何使用带有可选 UIImage 的绑定(bind)?

json - 在 express 中获取带有查询字符串的请求

java - 编辑 JSON 字段

ios - 同时捏合、拖动和平移