1

我一直在努力解决这个问题很长一段时间,但仍然没有找到最有效的方法来处理它。以下是详细信息:

我有一个应用程序,它使用核心数据来存储应用程序要显示的内容。该应用程序以 SQLite 数据库的形式下载内容,并尝试将其与其本地版本合并。这是必要的,因为下载的内容通常需要与用户之前下载的内容相结合。

为了让事情变得更复杂,我还需要一种组合这些文件的方法,以便它们干净地下载(换句话说,核心数据文件中没有无关的关系或孤立的对象)。我已经为此构建了编辑器,但是我再次遇到了合并这些 sqlite 文件的问题。

如果存在的话,我想找到一种更好的方法来组合这些 sqlite 数据库。我已经看到您可以使用持久存储协调器添加许多不同的存储文件,但是将所有正确的存储协调到单个下载包中变得更加困难和危险。

问题是:使用多个 sql 存储并将它们变成一个方便的 .sqlite 文件或让它们无缝运行的最佳方法是什么?

4

1 回答 1

1

首先,不要认为这是一个 SQLite 问题。这是一个核心数据问题。如果你在同一个段落中使用 Core Data 和 SQLite,你就已经输了。CD 确实(有时)使用 SQLite 作为其后备存储,但这些知识并不能帮助您解决这个问题。

当我不得不解决合并静态数据和用户生成数据的问题时,我通常使用两种不同的数据模型,在我控制的静态端有一个唯一的 ID。我以编程方式处理静态和实时数据之间的任何组合引用,因为用户数据与我的静态数据相比很小,所以效果很好。

您还可以调查获取的属性,这些属性允许您从不同的持久存储中获取值。

我认为将原始静态数据与更新的静态数据合并是错误的方法。这种操作在设备上需要很长时间。

你可以使用三个不同的持久化存储吗?第一个将与您的应用程序捆绑在一起,立即可用。第二个将是更新的数据,从服务器下载,将完全替代第一个。最后,您将拥有一个用户数据存储,通过获取的属性或您自己的唯一 ID 连接到主数据。

Core Data 也有可能是这个特定钉子的错误锤子。如果你有很多 SQLite 专业知识,并且如果你真的更喜欢使用 SQLite 而不是使用 Core Data,那就跳过 Core Data。在直接 SQLite 中完成整个事情。

于 2013-01-29T23:00:01.183 回答