我在開發具有核心數據的iPhone應用程序時遇到了崩潰問題。核心數據後臺同步衝突問題
該應用程序與後臺線程上的web服務同步數據。
當應用第一次啓動時,核心數據數據庫中的現有數據將在UITableView中顯示給用戶,而後臺線程脫離抓取Web服務API中的最新數據。讓我們調用核心數據模型用戶和項目,僅用於有許多項目的用戶進行討論。這些項目是在UITableView中顯示的內容。
當API結果返回時,將從核心數據中刪除用戶現有項目記錄,並將新的一組項目記錄插入到核心數據中。一旦所有項目被解析,一條消息被髮送回主線程以合併核心數據更改並從CD重新獲取數據。
但是,我一直崩潰在我的配置表單元格例程,我敢肯定它因爲超出範圍對象。意思是,主線程試圖顯示來自核心數據的對象,而後臺線程正在從核心數據中刪除那些相同的對象,並用新數據替換它們。
處理這類衝突的最佳方法是什麼?我必須放入某種機制才能啓動後臺線程更新,直到主視圖加載/顯示其所有數據爲止?如果是這樣,我該如何做到這一點?我是否仍然可以保持相同的方法,只是更好地刪除顯示的項目?
有沒有什麼辦法來鎖定單個持久性存儲協調器,而我正在刪除記錄?或者我應該使用獨立的持久性商店協調員?我不確定,只是在這裏大聲說出來,因爲這是我第一次在應用程序中使用Core Data。 – cpjolicoeur 2010-06-28 15:01:22
爲什麼項目實體被刪除而不是與web服務調用中的更新狀態合併? – falconcreek 2010-06-28 15:16:16
他們正在被刪除,因爲我認爲我更容易刪除並重新插入更新的數據,而不是嘗試管理與項目的狀態差異。如果我試圖更新,我需要跟蹤哪些屬性發生了變化,然後更新這些屬性,或者只是從API服務器完全重置項目。 我最初的想法是,只做一個批量刪除/替換,而不是通過API中的對象進行解析,對Core Data執行單一查找,然後執行另一個更新操作 – cpjolicoeur 2010-06-28 15:23:26