我已经在很长一段时间内一直在努力解决这个问题,但仍然没有找到解决问题的最有效方法。以下是详细信息:
我有一个应用程序,它使用Core Data来存储要显示的应用程序的内容。该应用程序以SQLite数据库的形式下载内容,并尝试将其与其本地版本合并。这是必要的,因为下载的内容通常需要与用户之前下载的内容相结合。
为了使事情变得更复杂,我还需要一种方法来组合这些文件,以便下载(换句话说,核心数据文件中没有无关的关系或孤立的对象)。我已经为此构建了编辑器,但我再次遇到了合并这些sqlite文件的问题。
如果存在,我想找到一种更好的方法来组合这些sqlite数据库。我已经看到你可以使用持久存储协调器添加许多不同的商店文件,但是将所有正确的商店协调到一个下载包中变得更加困难和危险。
问题是:使用多个sql存储并将它们组合成一个方便的.sqlite文件或让它们无缝运行的最佳方法是什么?
答案 0 :(得分:1)
首先,不要将此视为SQLite问题。这是一个核心数据问题。如果您在同一段落中使用Core Data和SQLite,则您已经丢失了。 CD(有时)使用SQLite作为其后备存储,但该知识无助于您解决此问题。
当我不得不解决静态和用户生成数据的组合问题时,我通常使用两种不同的数据模型,在我控制的静态端具有唯一的ID。我以编程方式处理的静态和实时数据之间的任何组合引用,由于用户数据与我的静态数据相比很小,因此工作正常。
您还可以调查已获取的属性,这些属性允许您从其他持久性存储中获取值。
我认为将原始静态数据与更新的静态数据合并是错误的方法。这种操作在设备上需要很长时间。
您可以使用三种不同的持久性商店吗?第一个将与您的应用程序捆绑在一起,立即可用。第二个是更新的数据,从服务器下载,并将完全取代第一个。最后,您将拥有一个userdata存储,通过获取的属性或您自己的唯一ID连接到主数据。
核心数据也可能是这个特殊钉子的错误锤子。如果你有很多SQLite专业知识,并且如果你真的更喜欢使用SQLite而不是使用Core Data,那么就跳过Core Data。用直接的SQLite做整件事。