Вы должны использовать decodeIfPresent
, а decoding
. if statement
не так. Он должен проверять на наличие равного нулю вместо ненулевого значения.
class EmphasisModel: Decodable {
var words: String?
enum CodingKeys: String, CodingKey {
case word, words
}
required init(from decoder: Decoder) throws {
let container = try decoder.container(keyedBy: CodingKeys.self)
self.words = try container.decodeIfPresent(String.self, forKey: .words)
if self.words == nil {
self.words = try container.decodeIfPresent(String.self, forKey: .word)
}
}
}
Использование
let data = """
{ "words": "1" }
""".data(using: .utf8)!
do {
let ad = try JSONDecoder().decode(EmphasisModel.self, from: data)
print(ad?.words)
} catch {
print(error)
}