对现有应用的更新

时间:2009-06-28 23:12:35

标签: iphone cocoa cocoa-touch sqlite

我有一个使用sqlite的应用程序。首次启动时,我将.db文件复制到NSDocumentDirectory中(以便我可以对其进行更新)。在以后的版本中,我计划向此数据库添加新数据。我如何确保每次应用程序更新(但不是每个应用程序启动时)都会将此数据库的最新副本复制到NSDocumentDirectory?

由于

-Konstantin

2 个答案:

答案 0 :(得分:2)

我有一个常量,我用新版本增加,比如kDatabaseVersion。

启动时,我会检查以下内容:

  • 数据库是否存在于Documents目录中?如果没有,请复制它。这可能意味着首次发布。

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

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

答案 1 :(得分:0)

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

相关问题