我正在开发一个应用程序与核心数据,定期下载所有的数据从网络服务。由于下载可能会失败或被用户取消,因此我希望能够回滚到以前的状态。我试着撤销NSManagedObjectContext,但似乎有点慢(我有成千上万的实体)。我现在正在做的是对持久存储文件进行备份,下载数据,如果下载失败,用备份替换存储文件。这似乎工作正常,除了在我可以从存储中获取实体之后似乎有延迟:如果在下载之后我立即转到使用NSFetchedResultsController的UITableView,我发现它是空的。如果我再等几秒钟,一切都会好起来的。
所以我的问题是:有没有人也遇到过这样的延迟?有没有什么办法可以避免这个问题,即使它阻塞了线程,也能迫使一切准备就绪?
发布于 2011-07-08 04:55:28
我没有使用过这种设置,但我认为您看到的延迟可能是因为核心数据必须清除所有缓存造成的。核心数据使用如果您将缓存与fetched results控制器一起使用,它将不得不测试,然后删除它现有的缓存。
我认为最好的做法是拆卸你的核心数据堆栈,然后从头开始重新启动它。这包括重新创建一个新获取的结果控制器。
https://stackoverflow.com/questions/6616236
复制相似问题