wake-up-neo.com

Msgstr "Kann NSManagedObjectModel nicht laden. Nil ist ein ungültiger URL-Parameter"

Ich möchte den verwalteten Objektkontext von AppDelegate abrufen, aber die App stürzte ab, nachdem ich die beiden Codezeilen in die Methode eingefügt hatte, selbst wenn ich sonst nichts tat, und es gab eine Meldung im Debug-Bereich: "CoreData: NSManagedObjectModel kann nicht geladen werden. Null ist ein ungültiger URL-Parameter ... "

Der in meiner Methode hinzugefügte Code:

AppDelegate *delegate = [UIApplication sharedApplication].delegate;
NSManagedObjectContext *managedObjectContext = delegate.managedObjectContext;

-managedObjectModel-Methode in AppDelegate:

- (NSManagedObjectModel *)managedObjectModel {
// The managed object model for the application. It is a fatal error for the application not to be able to find and load its model.
if (_managedObjectModel != nil) {
    return _managedObjectModel;
}
NSURL *modelURL = [[NSBundle mainBundle] URLForResource:@"FoodPin" withExtension:@"momd"];
_managedObjectModel = [[NSManagedObjectModel alloc] initWithContentsOfURL:modelURL];
return _managedObjectModel;
}

und die -managedObjectContext-Methode:

- (NSManagedObjectContext *)managedObjectContext {
// Returns the managed object context for the application (which is already bound to the persistent store coordinator for the application.)
if (_managedObjectContext != nil) {
    return _managedObjectContext;
}

NSPersistentStoreCoordinator *coordinator = [self persistentStoreCoordinator];
if (!coordinator) {
    return nil;
}
_managedObjectContext = [[NSManagedObjectContext alloc]initWithConcurrencyType:NSPrivateQueueConcurrencyType];
[_managedObjectContext setPersistentStoreCoordinator:coordinator];
return _managedObjectContext;
}

"FoodPin" ist mein Projektname . Was ist hier falsch? Ich bin neu in der iPhone-Programmierung (insbesondere Core Data).

Kann mir jemand helfen?

Vielen Dank...

11
ZyusAn

Das Problem ist diese Zeile:

NSURL *modelURL = [[NSBundle mainBundle] URLForResource:@"FoodPin" withExtension:@"momd"];

modelURL ist nil, was bedeutet, dass das System die Ressource FoodPin.momd nicht finden konnte.

Stellen Sie sicher, dass sich in Ihrem Projekt ein Kerndatenmodell mit dem Namen FoodPin befindet. Es wird im Projektnavigator als FoodPin.xcdatamodeld angezeigt.

24
Steve Wilford

Ich hatte das gleiche Problem, aber für mich war die modelURL richtig eingestellt. Das Problem war, dass sich meine * .xcdatamodeld-Datei nicht mehr in den Ressourcen des Kopierpakets befand. Ich weiß nicht, warum es verschwindet, aber um es erneut hinzuzufügen, beheben Sie das Problem.

So beheben Sie das Problem: Sie projizieren> Build-Phasen> Ressourcenpakete kopieren> Schaltfläche "+" und wählen Ihre xcdatamodeld-Datei aus

3
Tom Giraudet

NSURL * modelURL = [[NSBundle mainBundle] URLForResource: @ "XYZ" mit Erweiterung: @ "momd"];

Stellen Sie sicher, dass Ihr Datenmodellname mit URLForResource: XYZ übereinstimmt.

0
Ankit garg