核心数据在后台使用回滚导入数据

时间:2013-11-08 05:18:36

标签: ios objective-c multithreading core-data nsmanagedobjectcontext

对标题感到抱歉,我无法弄清楚如何总结我的长期问题。

我的应用在核心数据中有离线数据。用户可以通过从服务器下载最新版本来刷新它。图像也是下载的一部分。当用户取消更新操作或中间发生某些事情时,我希望在更新操作开始之前将数据保持在相同的状态。

许多论坛和博客都建议每个辅助线程创建自己的上下文。由于图像下载将在并发操作队列下,因此许多线程将处于运行状态。我不想在每个线程中保存以避免数据库处于不完整状态。

如果我为辅助线程创建活动实体的副本,那将是好的,这样所有这些辅助线程都可以保存,编辑。当整个更新过程结束时,我可以将数据移植到单个线程中的主表/实体。

给定方案的推荐方法是什么?

1 个答案:

答案 0 :(得分:2)

您一直在阅读的建议通常是正确的。只是,它不是创建上下文的辅助线程,而实际上是另一种方式。

您可以创建主要托管对象上下文的子上下文,确保在添加持久性存储时使用NSPrivateQueueConcurrencyType。使用performBlock API,它将自动为您管理线程和内存。如果下载失败,您只需丢弃您的子上下文。