Если вы попытаетесь реализовать свой декодер, у вас будет что-то вроде:
class MyClass: Codable {
var variable: Codable?
enum MyClassKeys: String, CodingKey {
case variable = "variable"
}
required init(from decoder: Decoder) {
let container = try! decoder.container(keyedBy: MyClassKeys.self)
variable = try! container.decode(XXXX, forKey: .variable)
}
}
Но вместо XXXX вы должны указать тип класса (например, String.self
).Что вы можете поставить здесь?Компилятор не может угадать, что вы хотите.Вместо Codable
типа, возможно, вы можете поставить класс, соответствующий протоколу Codable
.Таким образом, вы можете получить что-то вроде этого:
class MyClass: Codable {
var variable: MyClass?
enum MyClassKeys: String, CodingKey {
case variable = "variable"
}
required init(from decoder: Decoder) {
let container = try! decoder.container(keyedBy: MyClassKeys.self)
variable = try! container.decode(MyClass.self, forKey: .variable)
}
}