首页 文章

是否为Core Data的获取结果控制器实现委托

提问于
浏览
2

实现四种委托方法有什么好处:

  • (void)controllerWillChangeContent:(NSFetchedResultsController *)控制器

  • (void)controller:(NSFetchedResultsController *)controller didChangeSection:(id)sectionInfo atIndex:(NSUInteger)sectionIndex forChangeType:(NSFetchedResultsChangeType)type

  • (void)controller:(NSFetchedResultsController *)controller didChangeObject:(id)anObject atIndexPath:(NSIndexPath *)indexPath forChangeType:(NSFetchedResultsChangeType)type newIndexPath:(NSIndexPath *)newIndexPath

  • (void)controllerDidChangeContent:(NSFetchedResultsController *)控制器

而不是实施:

  • (void)controllerDidChangeContent:(NSFetchedResultsController *)控制器

任何帮助赞赏// :)

1 回答

  • 3

    当您将FetchedResultsController与表视图一起使用时,您可以实现这四个委托方法,以响应对获取的结果所做的每个更改,并在表中发生更改时设置动画 . 但是,正如NSFetchedResultsControllerDelegate documentation所述:

    动画所有更改可能在计算上很昂贵 . 您可以只实现controllerDidChangeContent :(在处理完所有挂起的更改后发送给委托)重新加载表视图,而不是单独响应更改(如“典型使用”中所示)

    因此,如果您正在进行一系列更改,您可以实现controllerDidChangeContent并使用 [self.tableView reloadData] 之类的内容立即响应所有这些更改 .

相关问题