在应用程序更新中发送一个新的 SQLite 数据库

Shipping a new SQLite database in app update

我们的应用程序将附带一个预填充的数据库,该数据库会不断从我们的生产服务器的数据库中下载更新以保持最新。当我们对应用程序的代码库进行更新并将这些更新推送到 AppStore 时,我们还将包含一个更新的 db.sqlite 文件。

我的问题是:当我们这样做时,我假设它会覆盖用户 "old" 已经存在的数据库文件?

我假设(并希望)答案是肯定的,但只是想仔细检查一下 - 我在 Apple 的文档中找不到任何答案,但可能只是被忽略了,或者一直在寻找错误的术语。

当你说 "which continually downloads updates from our production server's database" 我假设这意味着应用程序将下载数据并更新数据库?在这种情况下,数据库必须存在于 Documents 文件夹中,并且在您将其复制到 Documents 文件夹之前不会进入该文件夹。

通常情况下,如果数据库文件不存在,则由应用程序完成此操作,但是如果您想覆盖当前数据库,则需要一种机制来发现 Documents 文件夹中的文件是否不存在-date,与应用程序包中的日期相比。这可能意味着有一个 "metadata" table (有两列 name/value)包含版本号或类似的东西。您阅读两个数据库并决定是否复制。