Die Klasse wurde nicht gefunden und verwendet stattdessen NSManagedObject

7

Ich habe ein Problem mit Core-Daten in IOS 8. Wann immer ich die insertNewObjectForEntityForName -Methode verwenden möchte, bekomme ich die

  

Die Klasse wurde nicht gefunden und verwendet stattdessen das Standard-NSManagedObject.

Fehlermeldung. Ich benutze objective-c, und ich hatte dieses Problem nicht mit IOS 7. Auch könnte es ein Problem geben, weil in meinem Arbeitsbereich gibt es zwei Projekte, eines mit den Kerndaten Code und das andere die UI.

    
Dániel Nagy 16.09.2014, 12:49
quelle

6 Antworten

10

Dieser Fehler bedeutet, dass Sie einen benutzerdefinierten Klassennamen für den Entitätstyp im Modelleditor konfiguriert haben, die Klasse jedoch zur Laufzeit nicht existiert. Core Data greift zurück auf die Erstellung eines generischen NSManagedObject mit dem Entitätstyp.

Wenn Sie davon ausgehen, dass die Klassendatei tatsächlich existiert, liegt das Problem darin, dass Sie diese Datei nicht in das App-Ziel in Xcode einschließen. Da Xcode mehrere Ziele, Projekte usw. unterstützt, enthält es nicht automatisch jede Quelldatei in jedem Build. Fügen Sie dem App-Ziel die Unterdaten der Kerndaten hinzu, und dieser Fehler sollte verschwinden.

    
Tom Harrington 16.09.2014, 16:04
quelle
26

Bei der Verwendung von Swift könnte der Fehler auch auftreten, wenn die Quelldatei in Build Phases & gt; Kompiliere Quellen den Fehler

  

kann die Klasse '...' für die Entität '...' nicht laden.   Die Klasse wurde nicht gefunden. Stattdessen wird das Standardobjekt nsmanagedobject verwendet.

Um das zu lösen, können Sie die spezifische Modellklasse im Model Inspector (hier mit MyApp ) voranstellen. Siehe auch die Dokumentation .

Sie können objc(Person) vor Ihrer schnellen Klassendeklaration hinzufügen

%Vor%     
High6 07.04.2015 09:21
quelle
14

Dies ist eine aktualisierte Version der Antwort von @ High6

Ab Xcode 7 gibt es eine Eigenschaft Module , die Sie auf Current Product Module setzen können (es erscheint automatisch), so dass Sie keine Präfixe verwenden müssen.

    
FranMowinckel 31.01.2016 19:17
quelle
9

Es gibt eine ähnliche Antwort auf diese Frage. In meinem Fall habe ich Objective-C verwendet und dadurch wurde dieser Fehler in der Konsole behoben.

Ich habe die Antwort hier gefunden: Kann keine spezifische Unterklasse von NSManagedObject finden

Sie können das Feld "Module" leeren (es wird "None" angezeigt) und die Unterklassen des verwalteten Objekts mit @objc (Klassenname)

kennzeichnen

Das hat es für mich behoben.

    
c0d3Junk13 16.05.2016 21:46
quelle
7

Wenn Sie Xcode 7 beta verwenden, ist das Entfernen der @objc(Person) die eigentliche Lösung. Muss ein Fehler in der Vorlage sein, die zum Generieren von Entitätsklassen in Xcode 7 Beta verwendet wird.

    
Samuel Mellert 27.07.2015 16:32
quelle
0

Als keine der Lösungen für mich funktionierte, löschte ich das vorhandene NSManagedObject und erstellt ein neues. Wenn Sie Code aus dem vorherigen Objekt benötigen, denken Sie daran, eine Sicherung zu erstellen und diese später in die neue NSManagedObject-Klasse zu kopieren. Hoffe, das hilft jemandem.

    
Mot 16.12.2017 09:17
quelle

Tags und Links