Я декодирую объект, используя следующую модель
struct ACDeviceLastData {
var DA: ACDeviceLastDataBody = ACDeviceLastDataBody()
}
struct ACDeviceLastDataBody {
var amOn: Bool = false
var enabledZones: [Int] = []
var fanSpeed: Int = 0
var mode: Int = 0
var tempTarget: Float = 0.00
}
extension ACDeviceLastData: Decodable {
init(from decoder: Decoder) throws {
//Create Container
let container = try decoder.container(keyedBy: ACDeviceCodingKeys.self)
//Decode Data
DA = try container.decodeIfPresent(ACDeviceLastDataBody.self, forKey: .DA) ?? ACDeviceLastDataBody()
}
}
extension ACDeviceLastDataBody: Decodable {
init(from decoder: Decoder) throws {
//Create Container
let container = try decoder.container(keyedBy: ACDeviceCodingKeys.self)
//Decode Data
amOn = try container.decodeIfPresent(Bool.self, forKey: .amOn) ?? false
enabledZones = try container.decodeIfPresent([Int].self, forKey: .enabledZones) ?? []
fanSpeed = try container.decodeIfPresent(Int.self, forKey: .fanSpeed) ?? 0
mode = try container.decodeIfPresent(Int.self, forKey: .mode) ?? 0
tempTarget = try container.decodeIfPresent(Float.self, forKey: .tempTarget) ?? 0.00
}
}
Проблема в том, что значение DA
не всегда одного и того же типа.Иногда это может быть в формате массива целых чисел, а иногда в формате ACDevieLastDataBody.Я пытался сделать do-try-catch, но не мог понять, как заставить это работать (если это даже правильно)
Мой вопрос здесь, как мне поступитьо декодировании их без броска декодера, когда это массив целых чисел.Любая помощь очень ценится.Заранее благодарю.