有没有人有一个例子,说明如何有效地为UITableView提供来自Core Data模型的数据,最好包括使用部分(通过引用的属性),不带使用NSFetchedResultsController?
在NSFetchedResultsController可用之前,这是如何完成的?理想情况下,样本应该只获取正在查看的数据,并在必要时发出额外请求。
谢谢,
添
答案 0 :(得分:0)
为了记录,我同意CommaToast的说法,实现NSFetchedResultsController
的替代版本充其量只有一些非常有限的理由。事实上,当我提倡这样做时,我无法想到这个场合。
话虽如此,出于教育的目的,我想:
NSFetchedResultsController
针对托管对象上下文运行相关的NSFetchRequest
以创建初始结果集; NSManagedObjectContextObjectsDidChangeNotification
。收到该通知后,它会更新其结果集。获取请求位于谓词上方,并且谓词不能总是分解为它们引用的键(例如,如果您通过predicateWithBlock:
创建一个)。此外,虽然插入和删除的列表非常明确,但更改的对象列表并未提供有关这些对象如何更改的线索。所以我想它只是重新运行获取请求中提供的谓词对照已更改和插入记录的组合集,然后适当地累积结果,从之前认为结果的已删除集中删除任何内容。
在处理具有提取限制的提取请求时,可能会执行更有效的操作。明显的观察,直接在我的头顶:
逻辑扩展似乎是只有当你出现删除,插入和更改修改排序列表的位置时才需要重新询问托管对象上下文,以便 - 在将其删除到给定列表之前获取限制 - 底部对象不是您上次使用的对象。原因是你不知道任何关于你没有的插入和修改的存储对象;你只知道那些与你以前没有比较的东西。