2014-04-25 50 views
1

我在RestKit 0.22和核心數據保存時遇到問題。爲了確保我的項目的其餘部分不會導致問題,我使用RestKit示例中的RKTwitterCoreData重現它。我只是刪除種子部分開始一個空的SQLite數據庫。我的應用基於相同的概念。核心數據第一次沒有保存

我第一次運行應用程序時發生了問題。該應用程序接收來自twitter的數據並顯示它。但如果我看着sqlite數據庫本身,它是空的。當我第二次啓動應用程序時,數據庫正在填充。

RestKit可以在收到數據時保存數據嗎?

RestKit在保存所有數據之前可能會緩存所有數據。我雖然說我的問題發生,因爲RKManagedObjectStore中的managedObjectCache設置爲RKInMemoryManagedObjectCache,但我也嘗試了RKFetchRequestManagedObjectCache,我得到了相同的結果。

我也嘗試在[[[RKManagedObjectStore defaultStore] persistentStoreManagedObjectContext] save:nil]的成功區域手動保存,但沒有奏效。

謝謝

+0

您是否正在查看sqlite數據庫,同時該應用程序仍在從Xcode運行?如果是這樣,根據經驗,您需要在查看數據之前停止應用程序的運行。 – Nick

+0

我試了兩次,當它運行,並停止應用程序後。 – olivierplante

+0

您正在查看哪個sqlite文件以及如何(不是您應該直接查看任何文件...) – Wain

回答

1

RestKit不自動保存映射結果,並要求成功完成塊之前。

如果要檢查商店內容,請詢問MOC(主線程或持久性存儲MOC)並檢查registeredObjects /運行獲取請求。

你不應該看SQLite文件。表結構是一個私有的實現細節,如果你在命令行加載錯誤的選項文件,你不一定會看到你期望的。

+0

我們使用核心數據編輯器(可在App Store中查看)來查看數據存儲。 – Nick

+0

如果我在成功集成後獲取數據,我將得到所有數據。但數據庫是空的。爲了訪問數據庫,我在模擬器中運行它並查看sqlite文件的應用程序文件夾,或者使用軟件訪問設備內容。我用MesaSQLite打開sqlite文件。我第一次運行應用程序時,數據庫總是空的。 – olivierplante

+0

因此,在執行任何其他操作之前,您運行該應用程序的秒數會運行一次獲取 - 它會返回什麼? – Wain