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

时间:2010-05-31 23:07:03

标签: iphone core-data delegates

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

  • (void)controllerWillChangeContent:(NSFetchedResultsController *)controller

  • (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 *)controller

而非实施:

  • (void)controllerDidChangeContent:(NSFetchedResultsController *)controller

任何帮助赞赏//:)

1 个答案:

答案 0 :(得分:3)

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

  

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

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