アプリの Core Data モデルを変更するたびに、次の起動時に回復不能なエラーが生成されます:「ストアを開くために使用されるモデルは、ストアを作成するために使用されるモデルと互換性がありません」。
これを回避する唯一の信頼できる方法は、アプリを手動で削除して Xcode に再インストールさせるか、他の手法を使用してコア データ ストアの .sqlite ストア ファイルを手動で消去することです。これは明らかに、ユーザーへの出荷には適していません。
NSPersistentStoreCoordinator を初期化するための Apple のデフォルトの App Delegate テンプレートには、次のコメントが含まれています。
__persistentStoreCoordinator = [[NSPersistentStoreCoordinator alloc] initWithManagedObjectModel:[self managedObjectModel]];
if (![__persistentStoreCoordinator addPersistentStoreWithType:NSSQLiteStoreType configuration:nil URL:storeURL options:nil error:&error]) {
/*
TODO: Replace this implementation with code to handle the error appropriately.
...
If you encounter schema incompatibility errors during development, you can reduce their frequency by:
* Simply deleting the existing store:
[[NSFileManager defaultManager] removeItemAtURL:storeURL error:nil]
* Performing automatic lightweight migration by passing the following dictionary as the options parameter:
[NSDictionary dictionaryWithObjectsAndKeys:[NSNumber numberWithBool:YES], NSMigratePersistentStoresAutomaticallyOption, [NSNumber numberWithBool:YES], NSInferMappingModelAutomaticallyOption, nil];
*/
ただし、「エラーを適切に処理する」方法に関するサンプルや指示は見つかりませんでした。
この場合、単純にデータベースを吹き飛ばして、アプリにオンライン データから再生成させていただければ幸いです。これは、データベースを手動で吹き飛ばすときに行うことです。しかし、このエラー状態に応じて自動的にそれを行うにはどうすればよいでしょうか?
ベストプラクティスを説明する良いサンプルはありますか?