2

我在我的应用程序的第一个版本中使用 sqlite 来存储一些数据,现在我必须更改一些表的结构。

请注意,我之前发布了新版本,并注意到更新后数据库已被删除,因为更新后我没有看到数据库记录,并且它再次开始注册行。

我的问题是我是否需要在更新时处理表删除,为什么苹果会删除上次更新中的表?

4

2 回答 2

2

这取决于数据库文件的名称、表名和位置。

来自 Apple 的编程指南:当用户下载应用更新时,iTunes 会在新的应用目录中安装更新。然后它将用户的数据文件从旧安装移动到新的应用程序目录,然后再删除旧安装。以下目录中的文件保证在更新过程中被保留:

<Application_Home>/Documents
<Application_Home>/Library

尽管其他用户目录中的文件也可能被移动,但您不应依赖它们在更新后存在。

参考:http: //developer.apple.com/library/ios/#DOCUMENTATION/iPhone/Conceptual/iPhoneOSProgrammingGuide/PerformanceTuning/PerformanceTuning.html

于 2012-08-28T06:31:39.413 回答
0

更新后没有看到任何数据的可能原因有多种。例如,第二次更新中的代码可能更改了数据库文件的名称,或者某些表或字段的名称。

原则上,旧的 sqlite 存储应该在更新后存在。

您将不得不手动编写迁移代码:在更新后首次启动时,创建一个新存储,从旧存储读取每条记录,并以新格式将其保存在新存储中。

于 2012-08-28T06:36:29.930 回答