Alamofire: кодируемый объект с дополнительным свойством - PullRequest
0 голосов
/ 15 октября 2018

У меня есть объектная модель Codable, которую я получаю с помощью Alamofire.Однако я хотел бы добавить дополнительную логическую переменную в модель, которая не является частью модели на стороне сервера, возможно ли это на iOS?

Чтобы соответствовать протоколу Codable, мне нужно добавить его в перечисление CodingKeys, но если я это сделаю, он пытается проанализировать свойство с сервера, которого там нет.

1 Ответ

0 голосов
/ 15 октября 2018

Вы можете просто присвоить значение по умолчанию свойству, которое должно существовать только в классе модели вашего приложения iOS, а затем опустить имя этого свойства в вашем CodingKey enum, и ваш класс / структура модели все равно будет соответствовать Codable без необходимости кодировать / декодировать это свойство в / из 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)
}
...