2012-07-02 94 views
3

我需要幫助瞭解如何管理使用CoreData保存遠程對象的iPhone應用程序的API。據我瞭解,當iOS應用程序獲取遠程對象時,它會加載資源路徑上的所有對象。使用RestKit和CoreData同步修改對象的正確方法

對於後續的請求,我希望通過讓Web服務器僅返回自上次更新以來已更新的對象來降低開銷。我通過返回updated_at比請求的last_update時間更新的對象來執行此操作。

RestKit然後解析並將修改的對象映射到CoreData。此實現是使用RestKit和CoreData執行同步的正確方式,還是我缺少某個圖層之間的某個圖層?

謝謝!

回答

9

通常,RESTful接口應該嘗試並返回「基本」。在你的情況下,我建議使用HTTP標頭If-Modified-Since。它比傳遞另一個參數稍微清潔,因爲RestKit將處理HTTP狀態響應,而無需執行任何操作。

否則,你的方法似乎很正常。服務器同步是一個巨大的問題,並且有很多文獻和方法處理它。如果你想做一些更復雜的事情,那麼快速的網絡搜索會產生一些方法,但你的方法是我通常最終做的。

如果用戶可以編輯應用程序中的數據,則存在同步設備上所做修改的問題。爲此,通常將對象作用域設置爲「已修改」標誌,並且只在對象被修改時才上傳對象作用域。

+0

感謝您的輸入。如果只更新一個或兩個,If-Modified-Since方法是否會返回所有遠程對象?原因是我不希望服務器返回這麼多的對象並導致很長的加載時間。 – chourobin

+0

我從你的問題中假設你已經控制了服務器?這意味着你必須更新它。你可以像你一樣做同樣的事情,但不是通過last_update讀取這個頭文件。根據[HTTP標準](http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html),「此功能的目的是允許以最少量的事務開銷高效更新緩存的信息。 」。 –

+0

深入挖掘這一點,當遠程對象從應用程序中被刪除時會發生什麼。 iOS應用程序如何知道該項目被刪除,以及如何將此更改推送到設備上? – chourobin

相關問題