現在のアプリケーションをアップグレードして、特殊なサブエンティティを持つ抽象的な親エンティティを使用しようとしています。カスタム NSEntityMigrationPolicy を作成し、マッピング モデルでカスタム ポリシーをクラスの名前に設定しました。
このように永続ストアを初期化していますが、これはかなり標準的なはずです。
NSError *error=nil;
persistentStoreCoordinator = [[NSPersistentStoreCoordinator alloc] initWithManagedObjectModel: [self managedObjectModel]];
NSDictionary *options = [NSDictionary dictionaryWithObjectsAndKeys:
[NSNumber numberWithBool:YES], NSMigratePersistentStoresAutomaticallyOption,
nil];
if (![persistentStoreCoordinator addPersistentStoreWithType:NSSQLiteStoreType configuration:nil URL:storeUrl options:options error:&error]) {
NSLog(@"Error adding persistent store : %@",[error description]);
NSAssert(error==nil,[error localizedDescription]);
}
アプリを実行すると、次のエラーが表示されます。
キャッチされない例外 'NSInternalInconsistencyException' が原因でアプリを終了しています。理由: '操作を完了できませんでした。(ココア エラー 134140)」
[error userInfo] に「reason=Can't find mapping model for migration」が含まれています
データ モデルのバージョン 1 が開くことを確認しました。NSInferMappingModelAutomaticallyOption を設定すると移行が行われますが、エンティティは正しく移行されません (期待どおり)。
マッピング モデル (cdm) がアプリケーション バンドルに含まれていることを確認しましたが、なぜか見つからないのです。また、カスタム移行ポリシーにブレークポイントと NSLog() ステートメントを設定しましたが、NSInferMappingModelAutomaticallyOption の有無にかかわらず、どれも実行されません
マッピングモデルが見つからない理由についてのヒントはありますか?