2009-06-28 45 views
0

我有一个使用sqlite的应用程序。在第一次启动时,我将.db文件复制到NSDocumentDirectory中(以便我可以对其进行更新)。在更高版本中,我打算将新数据添加到此数据库。我怎样才能确保,每次应用程序更新(但不是每个应用程序的开始),这个数据库的最新副本将被复制到NSDocumentDirectory?对现有应用程序的更新

感谢

-Konstantin

回答

2

我有一个恒定的,我有新版本增加,说kDatabaseVersion。

在启动的时候,我检查以下内容:

  • 是否DB在Documents目录存在吗?如果没有,请复制它。这可能意味着首次发射已经发生。

  • 如果数据库确实存在,请使用相同的密钥在常量和NSUserDefaults条目中检查版本。如果该常数较大,请复制数据库。如果没有,不要。相应地更新NSUserDefaults。

当然,如果数据库还包含来自用户的数据,您还必须研究如何将其迁移到新的数据存储。如果您使用的是核心数据,您甚至可以考虑使用多个持久性存储来分隔用户数据和默认数据。

0

在您的应用程序中保留数据库版本号。 当应用程序启动时,检查数据库是否存在于文档目录中。如果没有,请将其复制到文档中。目录。 如果数据库已存在,请将您的应用程序的数据库版本号与存储在数据库表中的编号进行比较。如果数字相等,一切都很好,否则你必须“升级”现有的数据库(修改数据库模式或其他)。所以你可以用你的每个应用程序版本升级数据库。编写一个包含所有必要逻辑的简单函数“CheckForDatabaseUpdate”。并以版本号作为参数制作“UpgradeToDatabaseVersion”函数。该函数将处理数据库模式从一个版本升级到另一个版本。

相关问题