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

owe*_*wen 1 iphone core-data objective-c

我有一个在Sqlite上使用Core Data的应用程序,现在我有一个更新,它有一些数据库结构更改说添加一个新表

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

当应用程序更新并在第一次启动并运行时

[[NSPersistentStoreCoordinator alloc] initWithManagedObjectModel:[self managedObjectModel]];
Run Code Online (Sandbox Code Playgroud)

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

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

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

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

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

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

Ben*_*ieb 7

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