这是我的代码:
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:
{
"A": [
1,
2,
3
],
"B": [
1,
2,
3
]
}如何使用JSON中的所有值初始化对象B?当然,对象A也应该被初始化。我想在解码器中这样做,但我的代码中有很多错误。
因为Realm强制初始化器很方便,所以我不能从另一个级别调用初始化器。我如何改变我的初始化器,以便我可以用一个解码器初始化B类,它从子类(B)一直到顶层类(A)
谢谢
发布于 2018-11-28 17:26:48
我认为如果你想使用Decodable,你需要创建轻量级的结构体DecodedObject,然后从DecodedObject重写属性创建对象本身。
如果你想省略可解码步骤,你可以使用ObjectMapper代替DecodedObject。
https://stackoverflow.com/questions/49394672
复制相似问题