Alamofire:具有额外属性的可编码对象

时间:2018-10-15 12:08:05

标签: ios swift alamofire codable

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

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

1 个答案:

答案 0 :(得分:2)

您可以简单地为属性指定一个默认值,该属性仅应存在于iOS应用程序的模型类中,然后从您的CodingKey enum中省略该属性的名称,并且模型类/结构仍将符合Codable,而不必将该属性编码到JSON /从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)
}