2011-10-11 481 views
0

我有一個想法來構建自定義持久性存儲,基本上可以用作緩存。即從本地SQLite Store中獲得的對象將從其中檢索,而那些不可用的對象將從網絡中檢索,然後放入SQLite中。SQLite持久性存儲作爲緩存

問題是如何在覈心數據機制中連接此線程,以便不需要更改應用程序邏輯。緩存存儲需要表現得像一個合適的持久存儲。目前我的想法是擴展SQLite Persistent Store。

所以問題是我應該從哪裏開始? :)這是一個理智的想法,或者是我對Core Data的理解完全錯誤,這樣的事情不應該在一個可敬的應用程序中完成?有沒有人做過類似的事情?

回答

0

本地緩存對於您沒有始終連接的設備來說肯定很有價值。應用程序在本地商店中的反應也更加敏捷。

您自己編寫的一個選項是restkit(restkit.org)。

從他們的網頁:

核心數據的支持。 RestKit建立在對象映射層的基礎上,提供與Apple的Core Data框架的集成。此支持允許RestKit將遠程加載的對象直接保存到本地存儲中,可以作爲快速本地緩存或定期與雲同步的主數據存儲。 RestKit可以爲您填充核心數據關聯,允許基於自然屬性的遍歷數據模型。它還在覈心數據基元之上提供了一個很好的API,簡化了配置和查詢用例。

+0

謝謝bryanmac。我不知道RestKit。它看起來像是我的問題的確切解決方案:) –

0

請記住,CoreData具有顯着的性能和緩存機制。當與獲取的結果控制器進行交互時,CoreData會自動錯誤並填充對象,執行緩存,並且還可以批量返回對象的大小。

如果您有一個非常特殊的場景,也許可以通過自寫緩存重定向您的讀取來提高性能。但是對於大多數用途而言,僅僅使用CoreData可以自動使用,從而爲您提供一些非常複雜的功能。

+0

CoreData緩存機制用於緩存本地數據 - 我認爲他指的是通過在覈心數據中使用本地數據存儲來緩存遠程網絡資源... – bryanmac

+0

當然,使用RestKit將提供所有那些憑藉自身使用CoreData的優勢。我的建議確實是爲了達到這樣的目的,比如說我有一些從網上檢索到的數據(RestKit不耐),只是想緩存它。在Xcode中構建一個小模型,並在十行代碼中使用CoreData來保存對象 - 無需深入研究SQLite。 – isaac

+0

如果您需要比CoreData更快的東西,請查看BNRPersistence框架,它建立在東京內閣上,顯然非常活潑。 – isaac