适用于iPhone的缓存通用对象列表的选项?

时间:2011-02-19 01:11:48

标签: iphone ios core-data

我有一个连接API的应用程序,一次检索大量小对象。这些对象作为NSDictionary,NSArray等的层次结构从json-framework返回。它们是基本数据类型,并且大多数api调用的主要结构是项目列表(可能是数百个项目长)。

我将在UITableView中显示数据,但我不希望内存中的所有数据(因为我可能会把它全部吃掉)。我也不想再次打开对象的api,因为它们可以缓存几个小时没有任何问题。

我想过几个解决方案,但我很想听到其他选择。我曾想过以各种方式使用Core Data,但我想避免为从API返回的每种类型的实体创建和维护实体。像这样使用核心数据似乎有点矫枉过正。我可以使用核心数据来存储存档对象,但我担心存档/解压缩开销。

我真的想要一个通用商店,它可以保存缓存的对象列表,然后能够从列表中检索任意项。

我关心的因素:

  • 易于维护。如果api发生变化或者我们添加了其他对象,我不希望代码中有很多地方需要更改。存储通用对象(符合NSCoding)是理想的。

  • 性能。当用户与应用程序交互时(在后台),缓存和检索都将发生,但我不想消耗太多资源来制作app感觉很慢。

是否已存在用于此目的的现有库?我错过了哪些选择?也许说服我为每种数据类型创建核心数据实体实际上是对象缓存的好主意。

1 个答案:

答案 0 :(得分:1)

如果您还没有尝试过facebook / Three20库,他们已经实现了disc/memory cache并将其用作网络模块中的基本层之一。我在我的应用程序中使用了three20,但我从未直接使用过这个缓存层,所以我不确定它的性能。不过,记住它是件好事。

此外,Enormego团队已经实施了一个独立的照片浏览器。在这张照片查看器中有一个nicely-working disc-memory cache。我不确定它是否与three20缓存有任何关系。但我相信它可以缓存除图像之外的通用对象。你可以自己试试。