这是我的代码:
matplotlib
这是我的JSON:
class A: Object, Decodable{
let listA = List<Int>()
required init() {
self.init()
}
required init(realm: RLMRealm, schema: RLMObjectSchema) {
fatalError("init(realm:schema:) has not been implemented")
}
required init(value: Any, schema: RLMSchema) {
fatalError("init(value:schema:) has not been implemented")
}
private enum CodingKeys: CodingKey{}
public required convenience init(from decoder: Decoder) throws {
self.init()
}
}
class B: A{
let listB = List<Int>()
private enum CodingKeys: CodingKey{}
public required init(from decoder: Decoder) throws {
let container = try decoder.container(keyedBy: CodingKeys.self)
let encoder = try container.superDecoder()
try super.init(from: encoder)
}
required init(value: Any, schema: RLMSchema) {
fatalError("init(value:schema:) has not been implemented")
}
required convenience init() {
self.init()
}
required init(realm: RLMRealm, schema: RLMObjectSchema) {
fatalError("init(realm:schema:) has not been implemented")
}
}
如何使用JSON中的所有值初始化对象B?当然,对象A也应该被初始化。我想从解码器中做到这一点,但我的代码中出现了很多错误。
因为Realm强制初始化器很方便,所以我不能从另一个级别调用初始化器。如何更改我的初始值设定项,以便我可以使用从子类(B)一直到顶级类的解码器初始化类B(A)
由于
答案 0 :(得分:0)
我认为,如果要使用Decodable,则需要创建轻量级结构DecodedObject,然后根据DecodedObject重写属性创建Object本身。
如果要省略DecodedObject步骤,则可以使用ObjectMapper而不是Decodable。