У моего клиента есть сервис, который возвращает объекты Article.Есть свойство id, которое имеет тип UInt64.В том же API-интерфейсе, когда вы запрашиваете статьи категории, вы получаете ответ со статьями, но идентификатор является строкой.В настоящий момент никто не изменит эту глупость, поэтому я должен найти обходной путь, чтобы разобрать оба ответа.Моя модель выглядит примерно так:
struct Article {
let id: UInt64
let categoryName: String?
}
extension Article: Decodable {
private enum Keys: String, CodingKey {
case id
case categoryName
}
init(from decoder: Decoder) throws {
let container = try decoder.container(keyedBy: Keys.self)
id = try container.decode(UInt64.self, forKey: Keys.id)
categoryName = try container.decodeIfPresent(String.self, forKey: Keys.categoryName)
}
Как проверить тип Keys.id и использовать правильный метод для декодирования?Я должен использовать оба
id = try container.decode(UInt64.self, forKey: Keys.id)
id = try container.decode(String.self, forKey: Keys.id)
, чтобы правильно проанализировать мои объекты в обоих случаях.Заранее спасибо