gpt4 book ai didi

swift - 通过Decodable初始化Realm对象

转载 作者:行者123 更新时间:2023-11-30 11:39:39 25 4
gpt4 key购买 nike

这是我的代码:

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) 一直到顶级类 (A) 的解码器初始化类 B

谢谢

最佳答案

我认为如果你想使用 Decodable,你需要创建轻量级结构 DecodedObject,然后从 DecodedObject 重写属性创建对象本身。

如果你想省略 DecodedObject 步骤,你可以使用 ObjectMapper 而不是 Decodable。

关于swift - 通过Decodable初始化Realm对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49394672/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com