我在我的应用程序的第一个版本中使用 sqlite 来存储一些数据,现在我必须更改一些表的结构。
请注意,我之前发布了新版本,并注意到更新后数据库已被删除,因为更新后我没有看到数据库记录,并且它再次开始注册行。
我的问题是我是否需要在更新时处理表删除,为什么苹果会删除上次更新中的表?
我在我的应用程序的第一个版本中使用 sqlite 来存储一些数据,现在我必须更改一些表的结构。
请注意,我之前发布了新版本,并注意到更新后数据库已被删除,因为更新后我没有看到数据库记录,并且它再次开始注册行。
我的问题是我是否需要在更新时处理表删除,为什么苹果会删除上次更新中的表?
这取决于数据库文件的名称、表名和位置。
来自 Apple 的编程指南:当用户下载应用更新时,iTunes 会在新的应用目录中安装更新。然后它将用户的数据文件从旧安装移动到新的应用程序目录,然后再删除旧安装。以下目录中的文件保证在更新过程中被保留:
<Application_Home>/Documents
<Application_Home>/Library
尽管其他用户目录中的文件也可能被移动,但您不应依赖它们在更新后存在。
更新后没有看到任何数据的可能原因有多种。例如,第二次更新中的代码可能更改了数据库文件的名称,或者某些表或字段的名称。
原则上,旧的 sqlite 存储应该在更新后存在。
您将不得不手动编写迁移代码:在更新后首次启动时,创建一个新存储,从旧存储读取每条记录,并以新格式将其保存在新存储中。