2 Stimmen

Statisches Framework-Problem: +entityForName: konnte keine Entität namens 'APIContent' in diesem Modell finden

Können Sie mir bitte helfen zu verstehen, wie ich dieses Problem beheben kann? Ich versuche, Magical Record zusammen mit meiner CoreData-Datenbank innerhalb eines statischen Frameworks hinzuzufügen, das ich über mehrere Projekte hinweg verwenden kann.

Die Ausnahme, die ich bekomme, lautet wie folgt:

+entityForName: konnte keine Entität mit dem Namen 'APIContent' in diesem Modell finden.

Bitte den unten stehenden Code in meinem Model ausführen:

(void) insertOrUpdate:(NSDictionary *) objectDictionary {
@try {
NSManagedObjectContext *localContext = [NSManagedObjectContext MR_contextForCurrentThread];

APIContent *product;

// Überprüfen, ob das Objekt existiert
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"id == %@", [objectDictionary objectForKey:@"id"]];
product = [APIContent MR_findFirstWithPredicate:predicate inContext:localContext];

BOOL objectIdNotFound = product == nil ? TRUE: FALSE;

if (objectIdNotFound) {
    product = [APIContent MR_createInContext:localContext];
}

// Werte aus dem NSDictionary-Objekt importieren
[product MR_importValuesForKeysWithObject:objectDictionary];

[localContext saveToPersistentStoreWithCompletion:^(BOOL success, NSError *error) {
    if (success) {
        DDLogCInfo(@"Objekt erfolgreich gespeichert.");
    } else {
        DDLogError(@"Objekt NICHT erfolgreich gespeichert");
    }
}];
}
@catch (NSException *exception) {
DDLogError(@"Klasse: %@ Funktion: %s in Zeile: %d \n Ausnahme: %@", [self class], func, LINE, exception);
}

}

Vielen Dank, Michael

3voto

Danil Punkte 1750

Vielleicht gibt es hier ein Problem mit dem Bundle? Versuche, dein NSManagedObjectModel mit dieser Methode zu laden:

[MagicalRecord setDefaultModelFromClass:[self class]];

Ich habe den gleichen Fehler erhalten, als ich Unit-Tests für CoreData implementiert habe.

2voto

danypata Punkte 9825

Ich hatte das gleiche Problem bei einem meiner Projekte und die Ursache war, dass ich die Entität nicht zur Datei .xcdatamodeld hinzugefügt hatte.

Stellen Sie also sicher, dass Sie eine Entität namens APIContent in Ihrem .xcdatamodeld haben.

Stellen Sie außerdem sicher, dass, wenn Sie eine Entität zu Ihrem .xcdatamodeld hinzufügen, der Name Ihrer Entität und Klasse identisch sind (dies können Sie im Tab Data Mode Inspector überprüfen).

-1voto

NiallJG Punkte 1741

Stellen Sie sicher, dass Ihre Kern-Datenentitäten korrekt benannt/sich existieren und stellen Sie sicher, dass Ihre .xcdatamodeld-Datei korrekt benannt ist

Ich bin auf dasselbe Problem gestoßen, als meine .xcdatamodeld-Datei 'Model.xcdatamodeld' und nicht 'NameOfProject.xcdatamodeld' genannt wurde, wie es hätte sein sollen.

Ich hatte den Modellnamen in meiner Coredata-Implementierungsdatei (CoreData.m) auf den Projektnamen gesetzt, sodass das Projekt bei der Kompilierung nach einer 'NameOfProject.xcdatamodeld'-Datei gesucht hat, die jedoch 'Model.xcdatamodeld' genannt wurde.

Falls Sie denselben Fehler gemacht haben, stellen Sie sicher, dass Sie die App von Ihrem Testgerät deinstallieren, nachdem Sie die .xcdatamodeld korrigiert haben, da die vorherigen Einstellungen nicht aktualisiert werden und Ihre Korrekturen nur implementiert werden, wenn Sie die App auf Ihrem Testgerät neu installieren.

(Sie installieren die App einfach, indem Sie das Projekt in Xcode ausführen)

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X