2016-05-13 10 views
0

関係のIDのみを渡してレルムオブジェクトの関係を更新することはできますか?プライマリIDとのレルム関係の更新

私はList<Books>関係を持っていると私は一緒に2 LibrariesをマージしたいLibraryクラスを持っている場合、私はそれは次のように行うことができると推測します:

​​

その後、私は& SugarRecord ObjectMapper使用:

let changes = ["books": bookIds] 
Mapper<T>().map(changes, toObject: secondLibrary) 
let realm = self.realm 
realm.add(secondLibrary, update: true) 

しかし、本のリストは更新されません。 これは、ObjectMapperが主IDについて何も知らないため、オブジェクトにマッピングしようとしても何もしないためです。

RealmにはプライマリIDで更新する機能がありますか?もしそうなら、私は喜んでパーシスタンススタックを書き換えます。将来の参照のため

+0

投稿したコードは少し不明です。 2つ目のスニペットは、オブジェクトIDをまったく参照していないように見え、コンテキストの種類が明白でない多数の異なる変数を参照します。あなたのモデルがどのように見えるか、そしてあなたがそれらを使って何をしようとしているのかについてもっと詳しく説明できますか? – bdash

答えて

1

this Github issueで議論したものの回避策は、のような例では、オブジェクトの作成コードを変更することである。

let books = ["1", "2"].map { realm.objectForPrimaryKey(Book.self, key: $0) } 
realm.create(Library.self, values: ["id": "4321", "books": books], update: true) 

が直接ように主キー値のリストを渡すことはできませんcreate() APIに渡され、Libraryが作成され、Realmはこれらの主キーに関連付けられたオブジェクトを自動的に作成または更新します。

代わりに、この問題を回避するには、最初の取得またはobjectForPrimaryKey()を使用して、各プライマリ・キー値のBookオブジェクトを作成し、create()を用いたものBookオブジェクトを使用Libraryを作成します。

+0

それは私がオープンしたギタップの問題でした.... – barndog

+1

うん。私はちょうど、SOの他の誰かが同じ質問をしてこれを見つけた場合に、ここで答えを文書化したかったのです。 – AustinZ

関連する問題