2010-10-25 127 views
3

考虑一个SQL应用程序的SQLite数据库,其中包含一些“文档”作为模板。用户也可以添加他自己的模板。更新用于iphone的sqlite数据库

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

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

如何在不覆盖用户数据的情况下做到这一点?

回答

0

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

+0

这是我的想法。 – BobbyShaftoe 2010-10-25 15:33:49

0

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

  • 检查数据库是否需要更新(版本号等)
  • 运行ALTERUPDATE脚本采取的架构和数据从V1到V2
1

如果您使用的是核心数据,那么添加新的数据模型(模式)版本并自动进行“迁移”应该相对容易。通过一些小的更改,您可能需要创建映射模型。如果你的模式正在被重构的实体显着改变,抽象的级别被添加等等,那么你可能需要子类化NSEntityMigrationPolicy。

你可能想看看Core Data Model Versioning and Data Migration Programming Guide

你也可以看看马库斯Zarra的“核心数据”的书和示例代码。