iphone - 是否需要缓存CoreData返回的数据?

标签 iphone core-data

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

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

最佳答案

当您使用 coredata 和 UITableView 时,您应该使用 NSFetchedResultsController 。它会为您完成所有缓存工作,并且肯定比您做得更好。
fetchedResultsController 还负责 coredata 对象的删除、更改和插入,即它告诉您何时更新 tableview。但要使后者发挥作用,您必须设置 fetchedresultscontroller 委托(delegate)方法。 documentation 中包含委托(delegate)函数的完整示例。 .

一般来说,摆脱缓存,这是没有必要的。

关于iphone - 是否需要缓存CoreData返回的数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4976740/

相关文章:

iphone - 自定义 ios 应用程序导航栏按钮

iphone - 将 UIView 放入 UITableView Header

iphone - 3D立方体问题!第1部分

objective-c - 如何在核心数据中表示外键关系 - XCode 中的数据模型

iphone - 如何将 KVO 添加到 MPMoviePlayer currentPlaybackTime?

iphone - 如何多次发送相同的 Twitter 消息?

objective-c - iOS : Passing Array of Core Data entities from Obj-C to Swift

ios - NSFetchedResultsController 委托(delegate)奇怪的行为

ios - 从 Core Data 中将一对多显示为一对一

ios - 对如何设置 .xcdatamodel 进行版本控制感到困惑