更改後的代碼併發布。現在,應用在啓動時超時,同時將持久性商店協調員更新爲新模型。想要知道遷移是否是事務性的,以便我可以制定如何解決問題。在超時之前遷移將通過遷移得到x%。核心數據(SQLite)手動遷移事務?
如果我只需要首先啓動應用程序然後遷移事務。如果不是事務性的,我擔心用戶將只有部分遷移的模式。
背景
代碼用來調用
persistentStoreCoordinator_ = [[NSPersistentStoreCoordinator alloc] initWithManagedObjectModel:[self managedObjectModel]];
當數據庫的新模式存在,預期它會失敗。以前用戶將被提示通過UIAlertView
更新數據庫。然後將會調用以下語句。
[persistentStoreCoordinator_ addPersistentStoreWithType:NSSQLiteStoreType configuration:nil URL:storeURL options:optionsDictionary error:&error]
如果initWithManagedObjectModel
失敗,我決定運行第二行代碼。除了這個語句在` - (NSPersistentStoreCoordinator *)persistentStoreCoordinator'方法中運行外,並不那麼愚蠢,所以有時候應用程序在啓動時會超時。
在這個階段我不知道該怎麼做。數據庫是半映射到新模型還是仍然代表以前的模型?