gpt4 book ai didi

ios - 将对象从多个存储保存到单个持久性存储

转载 作者:行者123 更新时间:2023-12-01 16:58:36 25 4
gpt4 key购买 nike

我有两个使用相同模型的对象的持久性存储。我想在一个上下文中打开两个商店,但是将上下文仅保存到一个商店,然后安全地删除其中一个商店。我实质上是在尝试将两个持久性存储的内容合并到一个持久性存储中。因为实体之间存在关系,所以我发现这很困难。

this answer:

如果您确实需要两个商店中的对象之间具有关系,或者您确实只想拥有一个商店,那么最好的选择是创建第二个NSPersistentStoreCoordinator和第三个不同的持久性存储,以保存合并的对象图。您将需要编写代码来在第二个NSPersistentStoreCoordinator附带的托管对象上下文中创建对象的副本。您还需要在副本之间建立与原始对象相同的关系,但是如何执行此操作取决于您的数据模型。

除了在字面上如何为新商店复制对象的细节之外,这似乎很清楚。这是迁移问题吗?

最佳答案

最终,我使用了以下方法:

[migrator migrateStoreFromURL:[NSURL fileURLWithPath:incomingPath]
type:nil
options:nil
withMappingModel:managedObjectModel
toDestinationURL:[NSURL fileURLWithPath:finalPath]
destinationType:nil
destinationOptions:nil
error:&err];

[persistentStoreCoordinator removePersistentStore:[[persistentStoreCoordinator persistentStores]lastObject] error:&err];

“incomingPath”上的文件是我导入的商店,“finalPath”上的文件是我要合并到的已经存在的商店。两家商店都在同一持久性协调器中开放,并且都使用相同的对象模型。然后我删除了即将到来的商店,再也没有看过。我想我可以在文件系统级别将其删除。

为了满足我的特定数据需求,我然后提取了所有记录,剔除了重复项并保存了上下文。

我之所以发布此答案,是因为作为核心数据新手,这种简单的迁移非直观地解决了“无法保存与不同商店中的对象的关系”的问题。

关于ios - 将对象从多个存储保存到单个持久性存储,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9403319/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com