如何在应用程序版本更新的情况下在iPhone上的SQLite数据库中维护数据?

时间:2010-08-30 09:28:32

标签: iphone objective-c sqlite

我的iPhone应用程序的第一个版本(在应用程序商店中)有一个SQLite数据库。现在我想推出应用程序的第二个版本,其中还包含一个SQLite数据库。

我了解到更新后,SQLite数据库将被删除,然后添加新的数据库。我不希望发生这种情况,因为该数据库包含用户已保存的一些信息。如果在更新时删除它将不会很好。

问题是,如何将旧SQLite(旧版)数据库中的数据传输到新数据库?我如何测试App Store上可能发生的版本更新过程?

非常感谢任何帮助。感谢。

2 个答案:

答案 0 :(得分:2)

这不是我亲自测试的,但据我所知:

  1. 你的第一个问题是been answered,如果你的sqlite数据库没有被复制到Documents目录那么你运气不好,因为整个应用程序包将在升级时被替换。假设christo16是正确的,并且假设您已经发布的应用没有将数据库复制到Documents,您可能希望发布所做的临时版本这样做。然后,只需确保在推出数据库更新之前确保大量用户已安装临时版本。
  2. Re:测试。您应该能够通过iTunes安装构建而不是通过Build& amp;来测试升级行为。跑。自从我尝试了它已经有一段时间了......按照临时构建的说明应该可以做到这一点,尽管它可能有点过分。

答案 1 :(得分:2)

答案是:从一开始就在您的应用中实施版本控制: - )

在这种情况下,您可以将没有版本信息的应用视为版本1.我要做的是将数据库的版本存储在某个地方(可能在数据库本身内)。打开数据库时,根据应用程序期望的版本检查其版本,然后根据需要进行任何架构更改并更新存储的版本号。

如果您还没有将数据库复制到应用程序的Documents目录,那么这一切都没有意义,因为无论如何它都是只读的。否则,在更新之间保留Documents目录的内容。

要测试更新,只需在设备上使用以前版本的新副本即可。然后安装新的(构建和运行会很好)。您确实保留了应用程序的旧版本,对吧?