2011-10-11 154 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