Coredata更新后的一致更新UITableview

时间:2011-01-28 14:26:48

标签: iphone objective-c core-data asynchronous delegates

我有一个使用coredata的应用程序。数据下载发生在A类中.Coredata更新/保存/删除在SharedDelegate(B)中。委托在A中启动下载并实现其协议以在下载完成时得到通知,因此委托可以更新其在数据库中的数据。

现在,在那之后,我希望具有UITableview的C类更新其行和单元格,以便我可以显示新内容。

我如何正确地通知C,它可以更新其表格?可能发生的错误有哪些?

下载和更新当然是异步发生的,到目前为止,我只在所有下载完成后才更新....我想分开任务,这样说。

任何提示?

2 个答案:

答案 0 :(得分:6)

两个选项:

  1. 使用NSFetchedResultsController作为表格视图的数据源。 NSFetchedResultsController的文档包含许多您可以复制的代码。粘贴到您的应用程序中,以便在托管对象上下文发生更改时管理表视图更新。

  2. 注册NSManagedObjectContextObjectsDidChangeNotification。在您的通知方法中,处理案例NSInsertedObjectsKeyNSUpdatedObjectsKeyNSDeletedObjectsKey并相应地更新您的表格视图。

答案 1 :(得分:1)

使用NSNotificationCenter。设置类C以侦听通知并相应地重新加载数据。当SharedDelegate B更新数据时,发布通知。