0

将项目迁移到 swift 4 后,我开始使用 Decodable 将对象的序列化从 JSON 迁移到 Realm Object。我的对象内部有一个列表,该列表也在我的init(from decoder: Decoder)方法中进行了初始化。在代码中:

class MyObj: RealmSwift.Object, Decodable {
    dynamic var id: String
    let fooList = List<Foo>()

    init(from decoder: Decoder) throws {
        let container = try decoder.container(keyedBy: CodingKeys.self)
        id = try container.decode(String.self, forKey: .id)
        try? container.decode([Foo].self, forKey: .id)
                .forEach(fooList.append) 
    }

    override class func primaryKey() -> String? { return "id" }
}

序列化后检查对象,一切都很好。所有数据都正确序列化。然后稍后在网络层中,新序列化的对象被持久化在领域中:

realm.beginWrite()
realm.add(myObjInstance, update: true)
try! realm.commitWrite()

当我从领域重新获取对象时:

realm.object(ofType: MyObj.self, forPrimaryKey: id)

结果是一个 MyObj 实例,但 fooList 为空。

显然我做错了什么,但是什么?:D

4

0 回答 0