Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/36.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone 当其NSManagedObjectContext与后台线程中的另一个合并时,FetchedResultsController会阻止UI_Iphone_Ios_Core Data_Nsfetchedresultscontroller - Fatal编程技术网

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

Iphone 当其NSManagedObjectContext与后台线程中的另一个合并时,FetchedResultsController会阻止UI,iphone,ios,core-data,nsfetchedresultscontroller,Iphone,Ios,Core Data,Nsfetchedresultscontroller,我有一个符合NSFetchedResultsController协议的tableViewController。 在使用后台线程从服务器下载数据以保存到核心数据后,我必须将更改合并到主线程NSManagedObject上下文中,该主线程由此tableView中的NSFetchedResultsController实例使用。合并后,UI立即被阻止(几秒钟)。(NSFetchedResultsController正在更新)。 我想知道是什么导致了这种阻塞? 有没有办法绕过这个障碍 因为我认为这个NSF

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

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


谢谢大家。

我想UI被阻塞的原因是每次更改时获取控制器响应和更新表视图。这是每次将NSManagedObject添加到存储时


快速解决方案(可能是唯一的解决方案)是在后台下载数据,然后将获取的控制器从UITableView控制器的代理中退出,此时您可以执行更新,然后通过将控制器重新分配为UITableView代理将情况恢复到正常状态,然后重新发出获取。

您是否有来自服务器的大数据?这可能是另一个上下文需要花费时间来存储和获取的原因,这就是UI被阻塞的原因。我不认为是这样,因为我在本地创建了从服务器加载的数据的等价物,并使用前台上下文来保存它,但现在NADetchedResultsController在不阻塞的情况下完全更新。