当NSManagedObjectContext与后台线程中的另一个NSManagedObjectContext合并时,FetchedResultsController会阻止UI

时间:2013-08-25 16:22:00

标签: iphone ios core-data nsfetchedresultscontroller

我有一个符合NSFetchedResultsController协议的tableViewController。 在我使用后台线程从我的服务器下载数据以保存到Core Data后,我必须将更改合并到此tableView中由NSFetchedResultsController实例使用的主线程NSManagedObject上下文。合并后的UI被阻止(几秒钟)。(NSFetchedResultsController正在更新)。 我想知道导致这种阻塞的原因是什么? 有没有办法绕过这种阻止?

因为我认为这个NSFetchedResultsController更新会更新UI所以我认为将它放在另一个线程中是不合适的。

谢谢你们。

1 个答案:

答案 0 :(得分:0)

我认为UI被阻止的原因是由于获取的控制器反应并在每次更改时更新表视图。每次将NSManagedObject添加到商店时都是这样。

快速解决方案,也许是唯一一个,是在后台下载数据,然后将获取的控制器从UITableView控制器的委托中重新签名,此时您可以进行更新,然后通过以下方式恢复正常状态:将控制器重新分配为UITableView委托,然后重新发出fetch。