Ищу информацию о том, как бы вы справились со сценарием, с которым я недавно столкнулся.
Я успешно использовал Swift 4s Codable, но сегодня заметил неожиданный сбой. API, с которым я работаю, говорит, что возвращает boolean
для ключа manage_stock
.
Моя заглушенная структура выглядит так:
struct Product: Codable {
var manage_stock: Bool?
}
Это работает нормально, проблема в том, что API иногда возвращает string
вместо boolean
.
Из-за этого мой декод не работает с:
Expected to decode Bool but found a string/data instead.
Строка всегда равна "parent"
, и я хочу, чтобы она равнялась false
.
Я также не против изменить свою структуру на var manage_stock: String?
, если это упростит получение данных JSON из API. Но, конечно, если я изменю это, моя ошибка изменится на:
Expected to decode String but found a number instead.
Есть ли простой способ справиться с этой мутацией, или мне придется отказаться от всей автоматизации, которую Codable
привносит в таблицу, и реализовать свою собственную init(decoder: Decoder)
.
Ваше здоровье
init(decoder: Decoder)
. Или попросите владельца API отправить согласованные данные ???? - person vadian   schedule 05.02.2018