最初のCoreDataアプリをビルドしようとしていますが、起動時に次のエラーでアプリがクラッシュすると問題が発生します。
*** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: '+entityForName: could not locate an entity named 'Launchpad' in this model.'
*** First throw call stack:
(0x15b7012 0x13dce7e 0x6f4c5 0x3e0f 0x3c64 0xee05c8 0xe4802a 0xe15d23 0xe15a34 0xea2301 0x21ba53f 0x21cc014 0x21bc7d5 0x155daf5 0x155cf44 0x155ce1b 0x24037e3 0x2403668 0x32465c 0x2abd 0x29e5 0x1)
libc++abi.dylib: terminate called throwing an exception
私はこのエラーを調査していて、managedObjectModel
正しく構成されていないために一般的に発生するエラーを収集しましたが、自分のコードでそのようなエラーを見つける方法がわかりません。
私の中には次の3つの関数がありますAppDelegate
:
- (NSManagedObjectContext *)managedObjectContext
{
if (_managedObjectContext != nil) {
return _managedObjectContext;
}
NSPersistentStoreCoordinator *coordinator = [self persistentStoreCoordinator];
if (coordinator != nil) {
_managedObjectContext = [[NSManagedObjectContext alloc] init];
[_managedObjectContext setPersistentStoreCoordinator:coordinator];
}
return _managedObjectContext;
}
- (NSManagedObjectModel *)managedObjectModel
{
if (_managedObjectModel != nil) {
return _managedObjectModel;
}
NSURL *modelURL = [[NSBundle mainBundle] URLForResource:@"Orbiter" withExtension:@"momd"];
_managedObjectModel = [[NSManagedObjectModel alloc] initWithContentsOfURL:modelURL];
return _managedObjectModel;
}
- (NSPersistentStoreCoordinator *)persistentStoreCoordinator
{
if (_persistentStoreCoordinator != nil) {
return _persistentStoreCoordinator;
}
NSURL *storeURL = [[self applicationDocumentsDirectory] URLByAppendingPathComponent:@"Orbiter.sqlite"];
NSError *error = nil;
_persistentStoreCoordinator = [[NSPersistentStoreCoordinator alloc] initWithManagedObjectModel:[self managedObjectModel]];
if (![_persistentStoreCoordinator addPersistentStoreWithType:NSSQLiteStoreType configuration:nil URL:storeURL options:nil error:&error]) {
NSLog(@"Unresolved error %@, %@", error, [error userInfo]);
abort();
}
return _persistentStoreCoordinator;
}
訓練を受けていない目には、CoreDataオブジェクトが適切に構成されているように見えます。
Launchpadというエンティティをファイルに追加し、から派生しxcdatamodeld
た対応するクラスに接続しました。Launchpad
NSManagedObject
クラッシュの原因となっているコードのスニペットは次のとおりです。
AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
NSManagedObjectContext *context = [appDelegate managedObjectContext];
NSManagedObject *launchpad = [NSEntityDescription insertNewObjectForEntityForName:@"Launchpad" inManagedObjectContext:context];
最後の行は物事が軌道から外れるところです。
私は周りを見回しましたが、見つけたすべてのヘルプは、私がすでに持っている関数を追加することを示唆しているAppDelegate
ので、ここからどこに行くべきか本当にわかりません。