私はこのようなバックグラウンドスレッドでレルムデータベースをリフレッシュしたい: (私はWebサービスからの新鮮なデータを持っているので)Realmオブジェクトのコピーを作成することはできますか?
RLMRealm *realm = [RLMRealm defaultRealm];
[realm beginWriteTransaction];
[realm deleteAllObjects]; // !!
[Pubs createOrUpdateInRealm:[RLMRealm defaultRealm] withJSONArray:data];
[realm commitWriteTransaction];
問題はその間、私は&は、レルムDB内のオブジェクトを更新削除すること、である、ユーザーその間に削除されたRealmオブジェクト(Pubs)を指し示すDetail ViewControllerをいくつかオープンして、例外がスローされるようにすることができます。
私はいつもこのような何かをする必要があります詳細コントローラまたはそのプロパティからレルムオブジェクトにアクセスしたいとき、私はいつも除いて、このための任意のソリューションが表示されない:
(それは常に得ることを意味レルムのオブジェクトが、それはおそらく、あまりにも失敗する可能性があります)
pub = [Pubs objectsWhere:[NSString stringWithFormat: @"pubId = %lu", (long)_selectedPubId]].firstObject;
しかし、私はこのソリューションを使用していません。
pub = [Pubs objectsWhere:[NSString stringWithFormat: @"pubId = %lu", (long)_selectedPubId]].firstObject;
pub = [pub safeCopy];
のでPubRealmObjectはその間削除することができますが、パブオブジェクトはソロのをアクセスもする唯一の目的のために(メモリ内に存在します:私はこのような何か私が詳細ビューコントローラに呼び出すことができれば最高のだろう思っていますデータプロパティ)。
誰かが同様のことを試しましたか?
iOS SDKの方法でもlike thisを使用している場合もありますか?
データベースのオブジェクトを削除または更新するなどのrealmオブジェクトメソッドでは動作しません。
BtwメインスレッドでRealm dbの更新を呼び出そうとしましたが、アプリケーションに遅れが出るように5〜7秒(1000個のjsonオブジェクト)が必要です。だからこそ私はバックグラウンドアップデート&オブジェクトの安全なコピーが良いかもしれないと思っている。
しかし、私はオブジェクトをコピーしている間も失敗する可能性があると考えています。だからこの解決策は何ですか? (バックグラウンドの更新とRealmオブジェクトの安全なアクセスの比較)
こんにちはTiM thxさんの返信です。私はそれをチェックします。あなたが正しいと思うcreateOrUpdateInRealmメソッドについては、私は同じアイディアを持っていましたが、削除された行は管理されません。彼らは残るだろう。だから、削除されたものを見つけて削除しなければならず、ユーザーは削除されたアイテムを開くことができ、状況は同じです。しかし、いくつかのデータを削除することは非常にまれである可能性があります。だから私はそのように選ぶことができるかもしれない。私は見るでしょう。 – luky