【问题标题】:Alamofire: Codable object with extra propertyAlamofire:具有额外属性的可编码对象
【发布时间】:2018-10-15 12:08:05
【问题描述】:

我有一个使用 Alamofire 检索的 Codable 对象模型。但是我想在模型中添加额外的布尔变量,这不是服务器端模型的一部分,这在 iOS 上可能吗?

为了符合 Codable 协议,我需要将它添加到 CodingKeys 枚举中,但如果我这样做了,它会尝试从不存在的服务器解析属性。

【问题讨论】:

  • 添加一些关于你所做的事情的代码。在这种情况下很容易为您提供帮助。
  • 你想用那个额外的变量来实现什么?您可以将其设为可选,如果 API 响应中不存在它,它将始终为 nil。对于其他任何事情,您都应该使用计算属性。

标签: ios swift alamofire codable


【解决方案1】:

您可以简单地为应该只存在于您的 iOS 应用程序模型类中的属性提供一个默认值,然后从您的 CodingKey enum 中省略该属性的名称,您的模型类/结构仍将符合 @987654323 @ 无需将该属性编码/解码到 JSON。

您可以在下面找到一个示例。

struct Person: Decodable {
    let name:String
    let age:Int
    var cached = false //not part of the JSON

    enum CodingKeys:String,CodingKey {
        case name, age
    }
}

let json = """
{"name":"John",
"age":22}
"""

do {
    let person = try JSONDecoder().decode(Person.self,from: json.data(using: .utf8)!)
    print(person) // Person(name: "John", age: 22, cached: false)
} catch {
    print(error)
}

【讨论】:

    猜你喜欢
    • 2020-08-24
    • 2016-11-14
    • 1970-01-01
    • 1970-01-01
    • 2016-10-10
    • 1970-01-01
    • 1970-01-01
    • 2014-02-19
    • 1970-01-01
    相关资源
    最近更新 更多