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