Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone 将两个SQLite存储合并为一个_Iphone_Sqlite_Ios4 - Fatal编程技术网

Iphone 将两个SQLite存储合并为一个

Iphone 将两个SQLite存储合并为一个,iphone,sqlite,ios4,Iphone,Sqlite,Ios4,假设我的应用程序文档目录中有两个SQLite文件。我如何将两者结合起来,并将它们保存为一个文件,其中包含来自两者的所有信息?我真的需要创建两个持久的存储协调员并手动协调这两个协调员之间的流程吗?还是有更有效的方法 -Ash不确定商店协调员是什么,但您不能从第一个文件中转储数据,然后在第二个文件中加载吗 你的问题不是你需要问的。核心数据中的SQLite存储只是核心数据对象图的后备存储。事实上,它是一个SQLite数据库,对于核心数据来说并不重要。所以你的问题是,“如何将两个核心数据对象图合并为一个

假设我的应用程序文档目录中有两个SQLite文件。我如何将两者结合起来,并将它们保存为一个文件,其中包含来自两者的所有信息?我真的需要创建两个持久的存储协调员并手动协调这两个协调员之间的流程吗?还是有更有效的方法


-Ash

不确定商店协调员是什么,但您不能从第一个文件中转储数据,然后在第二个文件中加载吗

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

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


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

Dunno。持久存储协调员对我来说也是新事物。我本希望使用旧的数据流保存和加载方法,但这种方法已经被弃用了一段时间。持久存储协调器是核心数据的一部分。您不能只是将数据从一个持久性存储转储到另一个持久性存储中,然后期望它工作。你应该把SQLite商店当作黑匣子来对待,因为你可以通过自己在里面捣乱来轻松打破它们。谢谢。目前我不确定哪种方法是必要的。我更喜欢前者,因为前者更简单,但我不知道当我只需要一个文件时,让多个文件四处浮动是否会有任何负面影响。是的,您需要第二个持久存储协调器从复制对象中提取对象,然后您需要在“main”中创建这些对象的副本对象图。由于对象与特定的持久存储相关联,因此需要复制它们;您不能只是尝试将它们添加到另一个persistent store coordinator。@Alex hi我迁移了两个PersistentStore,但其中的一些数据是重复的,因此我不希望在目标存储中重复两次相同的数据。如果你有主意,就回答我。。谢谢