更新iphone的sqlite数据库

时间:2010-10-25 15:30:16

标签: iphone database sqlite

考虑一个带有一些“文档”作为模板的iPhone应用程序的SQLite数据库。用户也可以添加自己的模板。

我想更新程序和数据库。有没有机会这样做而不覆盖用户的数据?

我考虑过两个不同的数据库,但由于这是开销,我想避免使用此选项。

如何在不覆盖用户数据的情况下完成这项工作?

3 个答案:

答案 0 :(得分:1)

如果您正在使用Core Data,那么添加新的数据模型(架构)版本并自动进行“迁移”应该相对容易。通过一些小的更改,您可能需要创建映射模型。如果您的架构在重构的实体,添加的抽象级别等方面发生了重大变化,那么您可能需要继承NSEntityMigrationPolicy。

您可能需要查看Core Data Model Versioning and Data Migration Programming Guide

您还可以查看Marcus Zarra的“核心数据”一书和示例代码。

答案 1 :(得分:0)

您可以让应用程序在运行时检查旧版本的db,并在必要时自行更新。所以基本上,更新应用程序,它将处理更新数据库。这将允许您备份/恢复数据(如有必要)。

答案 2 :(得分:0)

更新应用程序及其数据存储区时,请在升级包中提供ALTER脚本。当应用程序首次运行时,它应该:

  • 检查数据库是否需要更新(版本号等)
  • 运行ALTERUPDATE脚本,将架构和数据从v1转换为v2