ios - 在后台线程中将核心数据从一个数据库复制到另一个数据库

标签 ios multithreading core-data

我有两个数据库文件,我可以轻松地将核心数据从一个上下文复制到另一个 - 如果我将两个上下文都放在主线程中 (NSMainQueueConcurrencyType)。
但是,如果我希望它在每个数据库文件的上下文都是 NSPrivateQueueConcurrencyType 的后台线程中异步发生,我该怎么做呢?请记住:两个上下文都有不同的持久存储协调器!
(PS:由于 NSConfinementConcurrencyType 在 iOS 9 中被弃用,所以限制类型对我来说是不可能的。)

最佳答案

您可以使用单个上下文和 PSC(如果两个模型不同,则合并它们)。添加两个存储(如有必要,使用配置),然后使用 affectedStores 从一个获取并使用 allocateObject:toPersistentStore: 在另一个插入。如果一个商店以只读方式打开,那么您将不需要使用 allocateObject:,Core-Data 将推断要使用的正确商店。

关于ios - 在后台线程中将核心数据从一个数据库复制到另一个数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37937909/

相关文章:

ios - 我怎样才能把两个委托(delegate)给一个 View Controller

c++ - 使用 std::mutex 数组时,条件变量不会触发

ios - 当属性是可选的时候会设置默认的CoreData属性值吗?

iphone - ios流mp3并录制声音

ios - 滑动以导航到另一个 ViewController 并根据手指移动进行更改

c++ - OpenMP 似乎没有并行运行

c# - 将 C# ThreadStart 委托(delegate)转换为 VB.NET

ios - 将 NSManagedObject 子类核心数据对象打印到控制台在 Swift 中返回空行

iphone - 在核心数据中搜索具有空 "to-many"关系的所有对象

ios - 当我尝试运行 Xcode 模拟器时,出现错误 'Stop “(null)”?