我正在开发一个带有 Core Data 的应用程序,它会定期从网络服务下载所有数据。由于下载可能会失败或被用户取消,因此我希望能够回滚到之前的状态。我尝试撤消 NSManagedObjectContext ,但这似乎有点慢(我有数万个实体)。我现在正在做的是备份持久存储文件,下载数据,如果下载失败,则用备份替换存储文件。这似乎工作正常,除了在我可以从商店获取实体后似乎有延迟:如果下载后我立即转到使用 NSFetchedResultsController
的 UITableView
,我发现它是空的。如果我等几秒钟,一切都会好的。
所以我的问题是:有人也遇到过这种延误吗?有什么办法可以避免这个问题,强制一切准备就绪,即使它阻塞了线程?
最佳答案
我没有使用过此设置,但我认为您看到的延迟可能是由于核心数据必须清除所有缓存造成的。核心数据使用如果您将缓存与获取的结果 Controller 一起使用,它将必须进行测试,然后删除其现有缓存。
我认为最好的办法是拆除核心数据堆栈并从头开始重新启动。这包括重新创建一个新获取的结果 Controller 。
关于ios - 切换 NSPersistentStore 文件时的 Core Data 延迟,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6616236/