iPhone应用程序更新(在Sqlite上使用Core Data)

时间:2010-04-27 11:42:14

标签: iphone objective-c core-data

我有一个在Sqlite上使用Core Data的应用, 现在我有一个更新,其中包含一些数据库结构更改,例如添加新表

我知道应用程序何时更新,它只更新应用程序二进制文件,文档目录中的任何内容都不会更改。

当应用更新并在第一时间启动并运行时

[[NSPersistentStoreCoordinator alloc] initWithManagedObjectModel:[self managedObjectModel]];

它将在Sqlite中找到数据模型和数据库结构之间的差异,并将抛出异常并退出。

错误:“用于打开商店的模型与用于创建商店的模型不兼容”

那么,这里的任何人都可以告诉我如何在数据库结构发生变化时更新应用程序吗?

我认为我们可以在第一次启动更新时运行数据库脚本来创建新表。

但如果还有其他更改,例如更改某些字段的类型或删除某些字段,并且我们需要迁移旧数据,这真的很令人头疼。 在这种情况下,唯一的方法是创建一个新的应用程序吗?

有没有人尝试过类似的东西?

1 个答案:

答案 0 :(得分:7)

您需要对数据模型进行版本处理,以处理您添加的任何新字段。 Apple已就此详细documentation。如果你只是添加字段,那很简单。我没有尝试删除字段,但我想它也很简单。一旦你进入不断变化的领域,你会引入一点复杂性,但这并不太难。