car*_*ath 7 core-data uikit ios swift
我有一个 UITableView 可以从NSFetchedResultsController. 为此,我基本上从https://developer.apple.com/library/content/documentation/Cocoa/Conceptual/CoreData/nsfetchedresultscontroller.html复制了 Apples 示例实现。
现在在 WWDC16 上,Apple 宣布了该UITableViewDataSourcePrefetching协议,该协议提供了回调,让您可以预取数据,以便在需要由 tableview 显示时已经加载。我正在寻找有关如何将其与 集成的示例NSFetchedResultsController,因为我无法确定我是否正确执行此操作。
cellForRowAtIndexPath而不是fetchedResultsController.object(at: indexPath)直接查询吗?fetchedResultsController.object(at: indexPath)预取回调,以确保数据被缓存?*编辑*:我在 WWDC16 上的 Core Data 演讲中找到了一张幻灯片,据说可以解释这一点,但我完全理解。
NSFetchedResultsController. 我想这就是为什么它managedObjectContext直接执行?.performFetch()的NSFetchedResultsController。在我打电话之前什么都没有出现。但是由于调用它后所有结果都在那里,我不明白为什么我需要再次预取它们。简而言之,您正在创建一个自定义谓词来“预热”MOC 中预测的特定对象。我认为,这个想法是表格视图告诉您更有针对性的滚动目标信息(基于速度等),关于它认为表格视图将结束的位置。这允许您执行异步请求来预取 MOC 中的这些对象,以便当您实际请求其属性时,它们已准备就绪。
这就是为什么您还完成了nil异步请求。您没有直接使用结果,因为您实际上可能尚未显示任何这些索引路径。Dictionary这也意味着当您获得预取的对象时,无需对结果进行额外的跟踪(例如在 a等中)。
真正的问题是,如果您使用具有批处理、预取属性等功能的 FRC,这真的会给您带来任何东西来回避它吗?我不太确定。我没有注意到UITableView在大约 1000 个结果的表上经过高度调整的 FRC+(带预取和不带预取)之间存在巨大差异。也可以仅通过触摸 FRC 就会看到的那些对象(因为您共享相同的 MOC),然后运行它的属性/关系预取等。我还没有看到关于此机制的太多文档,但是如果苹果建议这样做,特别是使用 FRC,我认为它会有所帮助。
| 归档时间: |
|
| 查看次数: |
3289 次 |
| 最近记录: |