2012-07-31 79 views

回答

0

那么,简单的答案是,委托方法允许您在NSFetchedResultsController(NSFRC)中的托管对象上采取操作时适当地更新表视图。

例如,如果删除NSFRC结果中的对象,则可以通过删除相应的行来更新表。

所以......

  • controllerWillChangeContent:这是一个好主意,告诉你要改变它的表视图(所以你应该调用它的beginUpdates:

  • controller:didChangeObject:atIndexPath:forChangeType在托管对象更改(添加,删除,移动等)时调用。根据情况更新表格视图(例如,如果管理对象被删除,则调用deleteRowsAtIndexPaths:withRowAnimation:

  • controller:didChangeSection:atIndex:forChangeType与上述内容类似,但是对于表格视图部分。

  • controllerDidChangeContent在更改完成时被调用。在这个方法结束也呼吁endUpdates:在您的表视图

希望这有所帮助。

+0

为什么不把这些方法放在NSFetchedResultsConroller类中?为什么需要一个代表? – Philip007 2012-07-31 21:23:13

+0

这是NSFRC让委派人了解任何管理对象何时发生变化的优雅方式,以便您可以对此执行操作。使它们成为类或实例方法将不起作用,因为这会假设您总是知道何时管理对象发生了变化。这不是唯一可以完成的方式。这里有一些想法:http://blog.shinetech.com/2011/06/14/delegation-notification-and-observation/ – 2012-07-31 21:39:35

+0

如果你想在这里使用类或实例方法,那么它听起来像你想控制自己管理对象。在这种情况下,你可以选择不使用NSFRC,这是完全有效的。然而,在我看来,尽管设置它最初的麻烦,但我发现它不仅消除了管理对象和表视图的一些痛苦,而且还增加了其他有用的行为。 – 2012-07-31 21:50:45

相关问题