Последние 3-4 часа я пытался заставить эту глупую штуку правильно декодировать это перечисление, и теперь я невероятно разочарован этим! У меня есть строка json
, возвращаемая из API, которая выглядит так:
[
{
"contractType": 0
}
]
Я пытаюсь сопоставить ЭТО с перечислением под названием ContractType
. Это все мое ContractType
перечисление
enum ContractType: Int {
case scavenger = 0
}
, и это мое расширение, которое я пытался сделать, чтобы оно соответствовало протоколу Codable
.
extension ContractType: Codable {
enum Key: Int, CodingKey {
case rawValue
}
enum CodingError: Error {
case unknownValue
}
init(from decoder: Decoder) throws {
let container = try decoder.container(keyedBy: Key.self)
let rawValue = try? container.decode(Int.self, forKey: .rawValue)
switch rawValue {
case 0:
self = .scavenger
default:
throw CodingError.unknownValue
}
}
func encode(to encoder: Encoder) throws {
var container = encoder.container(keyedBy: Key.self)
switch self {
case .scavenger:
try container.encode(0, forKey: .rawValue)
}
}
}
Что, черт возьми, я делаю неправильно!? Любая помощь будет принята с благодарностью!