Core Data(SQLite)是否是手动迁移事务?

时间:2012-12-31 00:59:39

标签: ios core-data-migration

更改了代码并发布了。现在,应用程序在启动时超时,同时将持久性商店协调员更新为新模型。想知道迁移是否是事务性的,所以我可以找出解决方法。在超时之前,迁移将通过迁移获得x%。

如果是事务性的我只需先启动应用程序然后再迁移。如果不是事务性的,我担心用户将拥有仅部分迁移的模式。

背景

用于调用的代码

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

当新的数据库模型存在时,它会失败,如预期的那样。以前会提示用户通过UIAlertView更新数据库。然后将调用以下语句。

[persistentStoreCoordinator_ addPersistentStoreWithType:NSSQLiteStoreType configuration:nil URL:storeURL options:optionsDictionary error:&error]

如果initWithManagedObjectModel失败,我决定运行第二行代码。不是那么愚蠢,除了这个语句在` - (NSPersistentStoreCoordinator *)persistentStoreCoordinator'方法中运行,所以应用程序现在有时会在启动时超时。

在这个阶段,我不知道该怎么做。数据库是半映射到新模型还是仍然代表以前的模型?

1 个答案:

答案 0 :(得分:0)

核心数据迁移是事务性的,因为迁移是在内存中完成的,旧数据库在内存中完成后将替换为新版本。

因此,当从didFinishLaunchingWithOptions方法中删除迁移过程时,解决了在启动时尝试迁移的超时问题。新的更新解决了那些与之前升级时间超时的人的问题。