NSFetchedResultController委托顺序didChange: atSectionIndex:



我有一个奇怪的情况,我问自己,如果我做错了什么。我有一个NSFetchedResultsController和一个分配的委托。委托接收已正确添加的节的函数调用,但消息的顺序似乎未定义。

func controller(_ controller: NSFetchedResultsController<NSFetchRequestResult>,
didChange sectionInfo: NSFetchedResultsSectionInfo,
atSectionIndex sectionIndex: Int,
for type: NSFetchedResultsChangeType) 

假设我的初始取回结果是3个section[0,1,2]。现在我收到关于更改的更新,如下所示:

  • 。插入动作
  • 。插入动作

我试图跟踪基于变化的视图模型,所以我不知道我需要在这里做什么。我如何在添加第3部分之前添加第4部分?问题是,如果我只是添加一个占位符第3节,然后添加第4节,我不知道我是否必须添加一个新的第3节,将所有后续部分移动一个,或者如果这是我在插入第4节之前错过的调用。

文档说明了顺序,但我希望更新是有序的,以便我可以跟踪对本地数组的更改。

任何提示都很感谢。

NSFetchedResultsController是专门为驱动UITableView数据源而设计/实现/测试的。来自文档:

While table views can be used in several ways, fetched results controllers primarily assist you with a primary list view.

回答你的问题,我不认为你做错了什么,但我认为你在试图逆向工程UITableView实现中的一些秘密武器。

有趣的问题。我在文档中没有看到任何关于操作顺序的内容,所以我们必须假定没有保证。但是根据NSFetchedResultsControllerDelegate的文档,实现controllerDidChangeContent(_:),然后重新加载表,看起来像是要走的路,而不是使用controller(:didChange:atSectionIndex:for:)。或者,如果你想继续捕捉每个部分插入,批量处理这些更改,直到你得到didChangeContent()调用。

相关内容

  • 没有找到相关文章

最新更新