2010-08-30 88 views
10

我的iPhone应用程序的第一个版本(这是在应用程序商店)有一个SQLite数据库。现在我想推出应用程序的第二个版本,该应用程序还包含一个SQLite数据库。如何在应用程序版本更新时在iPhone上的SQLite数据库中维护数据?

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

问题是,我如何从旧的SQLite(旧版本)数据库转移数据到新的数据?我该如何测试App Store上会发生的版本更新过程?

任何帮助将不胜感激。谢谢。

回答

2

答案是:从您的应用程序实现版本一开始:-)

在这种情况下,可以考虑应用程序没有版本信息是版本1,我会做的是店某处的数据库版本(可能在数据库本身内)。打开数据库时,根据应用程序的期望版本检查其版本,然后根据需要更改任何模式并更新存储的版本号。

如果您还没有将数据库复制到应用程序的Documents目录中,那么这完全没有实际意义,因为它只能被读取。否则,文档目录的内容将在更新之间保留。

要测试更新,只需从设备上的以前版本的全新副本开始。然后安装新的(构建和运行将会很好)。你确实保留了旧版本的应用,对吧?

+0

错误...我绝对应该保留我的应用程序的旧版本。无论如何,我会从现在开始。但我明白你在说什么,这似乎是一个不错的主意。将应用程序的版本插入数据库是一种技巧,但仍是一个好方法。所以这个想法是,当应用程序启动时,您检查以查看版本号。如果db的版本号低于应用程序本身的版本号,那么你启动一些SQL语句(如创建新表等))并更新数据库中的版本,以便在下次启动应用程序时不需要再次更新 – Andrei 2010-08-30 16:09:05

+0

对,虽然我发现最好为应用程序和数据库分别保留版本号。否则,如果更新应用程序但保持数据库不变,应用程序可能会错误地将更新应用于数据库。 – Brian 2010-08-30 17:17:52

2

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

  1. 你的第一个问题的been answered,短的那就是你的运气了,如果你的源码db不会复制到Documents目录,因为整个应用程序包将在升级时被替换。假设christo16是正确的,并且假设您已发货的应用程序未将复制到文档中,那么您可能需要发送一个临时版本,即确实如此。然后,在推出数据库更新之前,只需确保大量用户已安装临时版本即可。
  2. Re:测试。您应该能够通过iTunes安装构建来测试升级行为,而不是通过Build &运行。自从我尝试了一段时间以来......已经过了一段时间......按照专门构建的说明应该可以做到这一点,尽管它可能会过度杀伤。
+0

谢谢...我想这是有道理的......但如果有新的数据库发生了一些变化会怎么样。例如。在这个新版本中,我添加了一个新表格,但另一个表格保持不变。什么将是一个很好的解决方法呢? – Andrei 2010-08-30 10:57:58

相关问题