我正在开发一款需要多次异步下载并将其内容保存到Core Data实体的应用。其中一个下载很大,并注意到在创建/写入托管对象上下文时UI被阻止。我的研究让我阅读了并发的核心数据设置,并开始实现其中之一。但是我遇到了问题并花了很多时间来纠正问题。
在我继续之前,我正在考虑只使用NSPrivateQueueConcurrencyType
设置一个MOC。我读到的任何内容都没有提到这样做。这样我可以选择在后台执行MOC操作,或者像往常一样使用主线程,同时保持单个MOC。
这是一个好方法吗?如果没有,它有什么问题?我怀疑这是正确的方法,因为如果是,NSPrivateQueueConcurrencyType
支配NSMainQueueConcurrencyType
并且没有理由拥有后者。
答案 0 :(得分:2)
将NSPrivateQueueConcurrencyType
MOC用于后台任务没有任何问题。
但您可能仍需要NSMainQueueConcurrencyType
MOC。
来自documentation:
上下文与主队列相关联,因此是绑定的 进入应用程序的事件循环,但它在其他方面类似于a 基于私有队列的上下文。您将此队列类型用于上下文 链接到仅需要使用的控制器和UI对象 在主线上。
例如,对于获取的结果控制器,您将使用
NSMainQueueConcurrencyType
MOC。