1

在我的视图控制器中,我有一个使用 aNSFetchedesultsController作为数据源的表视图。而且我必须使用NSManagedContext后台线程中的另一个实例从服务器加载数据。在将前台上下文与后台上下文合并后,我需要在表视图中反映更改,以便我重置NSFetchedResultsController(以便它将再次获取新到达的数据),然后重新加载表视图。

很奇怪,我的表格视图似乎直到几秒钟后才重新加载(有时更长)。而且我确信这不是因为获取,因为当我滚动表格视图时,新数据会立即出现。

任何建议如何解决这个问题?

提前致谢!

4

3 回答 3

1

获取数据并创建托管对象后,您需要立即保存背景上下文,这些对象将合并到父上下文中,您可以仔细检查对父上下文所做的任何更改 [上下文 hasChange] [上下文更新对象] [上下文插入对象] 保存的对象是仍在内存中,您需要重置背景上下文清除它们

于 2013-08-29T08:08:02.473 回答
1

原来是我不明白通知回调函数在哪里被调用的结果。我在 NSManagedObjectContextDidSaveNotification 回调函数中重新加载我的表视图。当我检查它在这个函数中的哪个线程时,我发现它在我假设的主线程之外的另一个线程上运行。所以我使用 GCD 回到主线程并解决了问题。

于 2013-08-29T14:37:11.087 回答
0

保存操作应该在子上下文的私有队列上进行,所以你不必听通知,嵌套块等待所有事情完成并重新获取。

于 2013-08-29T22:52:05.827 回答