2016-01-20 49 views
0

我正在使用Realm作爲數據庫的應用程序。用戶可以隨時註銷,並刪除領域內的所有對象。解析對象時刪除Realm數據庫

但是,由於我的應用程序使用網絡,我可能正在同時解析對象的過程中,我崩潰了。

*** Terminating app due to uncaught exception 'RLMException', reason: 'Object has been deleted or invalidated.' 

這裏是我的註銷功能:

- (void)logout { 
    RLMRealm *realm = [RLMRealm defaultRealm]; 

    [realm beginWriteTransaction]; 
    [realm deleteAllObjects]; 
    [realm commitWriteTransaction]; 

    [self showLoginScreen]; 
} 

什麼是正確的操作方法是什麼?我想刪除我在註銷時存儲的所有數據。

+1

我還沒有使用過Realm,但只是想到了我的頭頂,可以刪除後臺線程中的所有對象,並在解析代碼和對象刪除代碼周圍放置'@ synchronized'塊(同步當然是同一個互斥體)。或者,您可能能夠複製從Realm獲得的對象,以便不解析「活動」副本,儘管我不知道Realm是否支持這一點。最後,你可以嘗試只檢查每個對象是否被刪除,儘管這聽起來有點駭人聽聞。 –

回答

0

您可以通過屬性invalidated檢查對象是否仍然存在。作爲鎖定機制,您可以使用寫入事務本身,因爲這些是Realm專有的。您只在一個時間點輸入一個寫入事務。

相關問題