核心数据从一个数据库复制到另一个数据库在后台线程
问题描述:
我有两个数据库文件,我可以很容易地将核心数据从一个上下文复制到另一个 - 如果我把两个上下文都放在主线程中(NSMainQueueConcurrencyType
)。
但是,如果我希望它在后台线程中异步发生,那么每个数据库文件的上下文都是NSPrivateQueueConcurrencyType
?请记住:两个上下文都有不同的持久性商店协调员!
(PS:由于NSConfinementConcurrencyType
在iOS版9提倡使用的约束类型是出了问题对我来说)。核心数据从一个数据库复制到另一个数据库在后台线程
答
你可以使用一个单一的环境和PSC(合并两个模型,如果它们是不同的)。添加这两个商店(如果需要,使用配置),然后使用affectedStores
从一个提取并且allocateObject:toPersistentStore:
插入另一个。如果一个商店以只读方式打开,那么您将不需要使用allocateObject:
,Core-Data将推断使用的正确商店。
您是在复制商店中的所有商品,还是只是一个子集? – pbasdf
@pbasdf:只有一个子集。 – Jan
您可以使用单个上下文和PSC(合并两个模型,如果它们不同),添加两个存储(如果需要,使用配置),然后使用'affectedStores'从一个和'allocateObject:toPersistentStore:'插入另一个。只是一个想法;从来没有尝试过。 – pbasdf