我是iOS(Swift)的新手,并试图了解NSFetchedResultsControllerDelegate机制。 我特别不明白的是如何识别NSFetchedResultsChangeType。什么调用插入/删除/更新等操作? 何时调用“func controller(...)”函数? 我无法从Apple的文档中获得它。 请详细说明。
答案 0 :(得分:2)
NSFetchedResultsController
并不聪明。在创建它时,您可以在其上设置fetchedRequest和上下文,并将其告诉performFetch
。一旦执行了fetch,它就会有一个与谓词匹配的对象数组。然后,它监视传递给它的核心数据上下文的所有更改。当一个对象(具有相同实体类型)被更改时,fetchedResultsController然后在更改对象上运行获取请求的谓词,以决定是否应该从列表中添加或删除它。如果对象已被删除,或者之前在列表中,并且现在不在列表中,则它是delete
。如果它之前不在列表中,但现在它确实传递了谓词,那么它就是insert
。如果排序描述符使用的其中一个字段已更改,则它为move
,否则为update
。如果同时进行了许多更改(上下文中有一个save
),将按顺序委派事件 - 删除,插入,移动,更新。 indexPath的值是任何插入或删除之前的索引,newIndexPath是任何插入或删除之后的值。这会回答你的问题吗?