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