0

更改代码并发布。现在应用程序在启动时超时,同时将持久存储协调器更新为新模型。想知道迁移是否是事务性的,这样我就可以弄清楚如何修复。迁移将在超时之前通过迁移获得 x%。

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

背景

用于调用的代码

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

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

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

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

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

4

1 回答 1

0

Core Data 迁移是事务性的,因为迁移是在内存中完成的,一旦完成,旧数据库就会在内存中被新版本替换。

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

于 2013-01-08T06:22:34.697 回答