将两个SQLite商店合二为一

时间:2010-09-18 12:21:26

标签: iphone sqlite ios4

假设我的应用程序文档目录中有两个SQLite文件。我如何将两者结合在一起并将它们保存为包含两者所有信息的单个文件?我是否真的必须创建两个持久存储协调器并手动协调两者之间的过程,还是有更有效的方法呢?

-Ash

2 个答案:

答案 0 :(得分:6)

你的问题不是你需要问的问题。 Core Data中的SQLite存储仅仅是Core Data对象图的后备存储。事实上,它是一个SQLite数据库对Core Data来说并不重要。所以你的问题确实是,“如何将两个Core Data对象图合并为一个?”

这取决于您想要对数据做什么。 Core Data中的一个规则是您不能在不同持久性存储中的两个对象之间建立关系。因此,如果您不需要存储A中的对象与存储B中的对象之间的关系,那么它非常简单。只需将两个持久存储添加到NSPersistentStoreCoordinator,两个存储中的所有对象都可以从与该持久存储协调器关联的任何托管对象上下文中获得。

如果你确实需要在两个商店中的对象之间建立关系,或者你真的只想拥有一个商店,那么最好的办法是创建第二个NSPersistentStoreCoordinator和第三个不同的持久存储保持合并的对象图。您需要编写代码来创建附加到第二个NSPersistentStoreCoordinator的托管对象上下文中的对象的副本。您需要在原始对象所具有的副本之间设置相同的关系,但是如何执行此操作取决于您的数据模型。如果您想在问题中添加更多细节,也许我可以让您更好地了解所涉及的内容。

答案 1 :(得分:1)

不确定商店协调员是什么,但你不能只从第一个转储数据,并在第二个加载它?