私の状況はこの質問に似ています。私は次のコードで軽量の移行を使用していますが、Appleドキュメントや他のSOスレッドからはかなりバニラです。CoreDataスタックを初期化するときにアプリの起動時に実行されます。
NSDictionary *options = [NSDictionary dictionaryWithObjectsAndKeys:
[NSNumber numberWithBool:YES], NSMigratePersistentStoresAutomaticallyOption,
[NSNumber numberWithBool:YES], NSInferMappingModelAutomaticallyOption,
nil];
NSError *error = nil;
NSString *storeType = nil;
if (USE_SQLITE) { // app configuration
storeType = NSSQLiteStoreType;
} else {
storeType = NSBinaryStoreType;
}
persistentStoreCoordinator = [[NSPersistentStoreCoordinator alloc] initWithManagedObjectModel:[self managedObjectModel]];
// the following line sometimes crashes on app startup
if (![persistentStoreCoordinator addPersistentStoreWithType:storeType configuration:nil URL:[self persistentStoreURL] options:options error:&error]) {
// handle the error
}
一部のユーザー、特に低速のデバイスでは、示された行のログでクラッシュが確認されています。
修正は、これを手動のマッピングと移行に切り替えることであることを理解しています。それを行うためのレシピは何ですか?私にとっての長い道のりは、すべてのAppleドキュメントを読むことですが、特にスキーマ移行のための良い例とチュートリアルがあったことを思い出しません。