我想解析一些带有空字段的数据。如果字符串的值为空,则应将其替换为“” (空白)同样适用于所有数据类型。如果该值为零,那么我想设置变量的默认值。在 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 时,您可以:
使用 Swift 合并运算符
??
Brewery = someOptionalValue ?? ""
围绕可选内容创建您自己的类别:
extension Optional { func getOrElse<T>(defaultValue: T) -> T { if let value = self? { return value as T } else { return defaultValue } } }
并将其用作
Brewery = someOptionalValue.getOrElse("")
或者您可以简单地使用三元运算符
编辑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/