是否有必要缓存从CoreData返回的数据?

时间:2011-02-12 06:42:53

标签: iphone core-data

我使用CoreData将数据存储在iPhone应用程序中。存储的数据旨在表示树,每个记录都是一个节点(指向其父节点)。当用户浏览此树时,我将当前父项和当前子项集缓存在NSArray中。我最初认为这是有道理的,因为它可以允许更快地访问兄弟节点(当数据在UITableView中呈现并且用户滚动时很有用)。我觉得每次需要下一个孩子时使用CoreData来执行“获取所有孩子”查询都是低效的(即我将为n个孩子进行n次相同的查询,并且每次只返回第i个结果)。

现在,我不太确定这是必要的还是聪明的(主要是因为我已经知道CoreData是一个我尚未完全理解的野兽)。 有人知道这是不是很好的做法?我知道CoreData可以免费做很多事情,包括缓存结果,但是因为我知道我的数据将像树一样使用,我的实现(或其他一些CoreData外部缓存实现)是否会更有效?

1 个答案:

答案 0 :(得分:4)

当您使用coredata和UITableView时,您应该使用NSFetchedResultsController。它为你做了所有的缓存,并且肯定它比你做得更好。
fetchedResultsController还负责删除,更改和插入coredata对象,即它告诉您何时更新tableview。但是要使后者运行,你必须设置fetchedresultscontroller委托方法。 documentation中包含代理函数的完整示例。

一般来说,摆脱你的缓存,这是不需要的。