NSFetchedResultsControllerDelegate如何工作?

问题描述:

我是新的iOS(Swift),并试图理解NSFetchedResultsControllerDelegate机制。 我特别不明白的是如何识别NSFetchedResultsChangeType。什么调用插入/删除/更新等操作? 何时调用“func controller(...)”函数? 我无法从Apple的文档中找到它。 请说明一下。NSFetchedResultsControllerDelegate如何工作?

NSFetchedResultsController不是那么聪明。当你创建它时,你在它上面设置一个fetchedRequest和一个上下文,并且告诉它performFetch。一旦它执行了一个获取,它就有一个匹配谓词的对象数组。然后它监视传递给它的核心数据上下文的所有更改。当一个对象(具有相同的实体类型)被改变时,fetchedResultsController然后在改变对象上运行提取请求的谓词,以决定是否应该从列表中添加或删除它。如果该对象被删除,或之前已在列表中,并且现在不在列表中,则它是delete。如果它不在列表中,但现在它通过谓词,那么它是insert。如果排序描述符使用的某个字段发生更改,则它是move,否则它是update。如果同时进行了很多更改(上下文中有一个save),则会按顺序委派事件 - 删除,插入,移动,更新。 indexPath的值是任何插入或删除之前的索引,newIndexPath是任何插入或删除后的值。这是否回答你的问题?

+0

是的,它的确如此。非常感谢! – Shira