我有一个用Alamofire检索的Codable对象模型。但是我想在模型中添加额外的布尔变量,这不是服务器端模型的一部分,在iOS上可以吗?
要符合Codable协议,我需要将其添加到CodingKeys枚举中,但是如果这样做,它将尝试从不存在的服务器中解析属性。
答案 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)
}