我想刷新在後臺線程這樣的境界數據庫: (因爲我有新的web服務數據)是否可以複製Realm對象?
RLMRealm *realm = [RLMRealm defaultRealm];
[realm beginWriteTransaction];
[realm deleteAllObjects]; // !!
[Pubs createOrUpdateInRealm:[RLMRealm defaultRealm] withJSONArray:data];
[realm commitWriteTransaction];
問題是,同時我刪除&續訂境界數據庫中的對象,用戶可以打開一些Detail ViewController,指向一些Realm對象(Pubs),同時它被刪除,所以拋出異常。
我沒有看到這方面的任何解決方案,除了總是當我想訪問的細節控制人及其財產的領域對象,我需要經常做這樣的事情:
(這意味着總能得到領域對象,但也可能失敗)
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?
我只需要像我說的那樣訪問數據屬性,而不是像區域對象方法那樣操作,比如刪除或更新數據庫中的對象。
btw我試圖調用主線程中的Realm數據庫的更新,但問題是需要5-7秒(只有1000個json對象),所以它滯後於應用程序。這就是爲什麼我認爲後臺更新&安全複製對象可能會更好。
但我認爲即使在複製對象時它可能會失敗,那麼對此的解決方案是什麼? (後臺更新與Realm對象的安全訪問)
您好TiM thx回覆。我會查一下。至於createOrUpdateInRealm方法你是對的,我有同樣的想法,但我想這不會管理已刪除的行。他們會留下。所以我不得不找到哪些被刪除並刪除它們,用戶可以打開刪除的一個項目,情況是一樣的。但是,發生刪除某些數據可能相當少見,這是真的。所以可能我可以選擇那種方式。我再看看吧。 – luky