我正在使用Core Data开发一个应用程序,该应用程序定期从Web服务下载所有数据。由于下载可能会失败或被用户取消,我希望能够回滚到以前的状态。我尝试撤消NSManagedObjectContext
,但这似乎有点慢(我有成千上万的实体)。我现在正在做的是备份持久性存储文件,下载数据,如果下载失败,则用备份替换存储文件。这似乎工作正常,除了我可以从商店获取实体后出现延迟:如果在下载后我立即转到使用UITableView
的{{1}},我发现它是空的。如果我等了几秒钟,一切都还好。
所以我的问题是:有没有人有过这种延迟?有没有什么可以做的,以避免这个问题,即使它阻止线程,也会迫使一切准备就绪?
答案 0 :(得分:1)
我没有使用过此设置,但我认为您看到的延迟可能是因为Core Data必须清除所有缓存。核心数据使用如果您使用带有获取结果控制器的缓存,则必须测试然后删除它的现有缓存。
我认为最好的办法就是拆掉Core Data堆栈并从头开始重启。这包括重新创建一个新的结果控制器。