【发布时间】:2020-02-26 11:58:20
【问题描述】:
我知道class 和struct 的基本概念,但是为API 创建模型以获取数据并告诉我优缺点更有效。
以前我不使用可选的模型。相反,我给它一些价值。即
class CompanyInfo : Codable {
var NameEn : String = ""
var CityEn : String = ""
var Website : String = ""
var Email : String = ""
var Phone : String = ""
var Fax : String = ""
}
但是当它从 API 获得一些 null 值时。即"Fax": null 然后应用程序崩溃,因为它无法使用以下行解析数据
let data = try JSONDecoder().decode(dataModel.self, from: dataSet)
什么是定义模型的最佳方式,所以我不需要解开可选或给它默认值。
【问题讨论】:
-
你做不到。
-
@wahab 您可以使用“Glossy”或任何其他库,我们不需要手动创建数据模型,只需给他们 JSON,他们会为我们创建它。如果您需要示例,请告诉我。
-
您可以这样做,但是您必须在任何地方实现
init(from decoder: Decoder) throws以分配默认值,以防值不存在。始终以struct开头,并在需要时将其更改为class。您也可以查看this了解一些相关信息。 -
@MojtabaHosseini 谢谢,我不知道
decodeIfPresent(_:forKey:)。这是题外话,但你最终必须处理默认值,躲避选项是不可能的:P
标签: ios swift xcode codable decodable