将项目迁移到 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