Ich habe ein Problem, bei dem meine Anwendung mit der folgenden Ausnahme abstürzt:
Das seltsame Problem mit dieser Ausnahme ist, dass es bei Verwendung von iOS5 nicht auftritt. Bitte beachten Sie den Code, unter dem die Ausnahme stattfindet:
%Vor%}
Würde diese Ausnahme verursacht werden, weil ich eine abgerufene Eigenschaft in der Klasse Tour definiert habe, die eine Reihe von TourDetail-Klassen enthält. Bitte beachten Sie den Implementierungscode für beide Klassen:
%Vor%Jede Hilfe bei diesem Problem wird sehr geschätzt. Da ich nicht weiß, wie ich das beheben kann.
Danke, Michael
UPDATE:
Wenn ich die abgerufene Eigenschaft entferne, tritt die Ausnahme bei iOS6 nicht auf. Bitte beachten Sie das Prädikat, das ich unten konfiguriert habe:
Können Sie etwas sehen, was ich bei der Einrichtung dieses Prädikats falsch mache? Mein Ziel ist es, dies zu verwenden, so dass ich ein Array von TourDetail-Objekten für jede Tour-ID zurückgeben kann, die die ID-Spalte in der Tour-Tabelle berechnet.
UPDATE:
Ich konnte aufgrund des Prädikats feststellen, dass die Ausnahme ausgelöst wird, da beim getrennten Aufrufen beider Tabellen keine Ausnahme ausgelöst wird. Können Sie ein Problem mit dem von mir erstellten Prädikat sehen?
Siehe Code unten, der zeigt, wie ich die Objekte aus der Core Data DB abrufe:
%Vor%UPDATE:
Die Wurzel des Problems stammt definitiv aus dem Prädikat, das ich für die Eigenschaft Getetched definiert habe, aber Sie können mir raten, wie ich das Prädikat schreiben sollte, um die zwei Tabellen zu verknüpfen. Wenn ich das Prädikat tour_id == 0 schreibe und direkt auf eine ID referenziere, weiß ich, dass die abgerufene Eigenschaft korrekt funktioniert. Aber wenn ich $ FETCH_SOURCE.id verwende, wird die Schlüsselwertcodierungsausnahme ausgelöst. Mit welcher Eigenschaft referenzieren Sie die Tabelle, auf die Sie verlinken möchten?
Schätze wirklich all deine Hilfe dabei.
Danke, Michael
Es gibt nichts in dem Code, den Sie für viewWillAppear
gepostet haben, der Core Data auf irgendeine offensichtliche Art und Weise berührt, was es schwer macht zu erraten, was passiert. Einige dieser Objekte sind möglicherweise verwaltete Objekte, aber wer weiß, welche oder wie Sie sie erstellt haben?
Die Fehlermeldung liefert jedoch einen großen Hinweis:
%Vor% Die Tatsache, dass hier _NSObjectID_48_0
erwähnt wird, zeigt an, dass Sie irgendwann NSManagedObjectID
Instanzen verwenden, wenn Sie NSManagedObject
Instanzen erwarten. NSManagedObjectID
hat keine Eigenschaft mit dem Namen id
, unabhängig davon, wie die Entität aussieht. Wenn Sie also nach id
fragen, wird ein Fehler erzeugt, der nicht mit dem Schlüsselwert kompatibel ist.
Warum dies passieren würde, ist immer noch unmöglich zu sagen, da Sie keinen Code gepostet haben, der irgendwelche Hinweise darüber gibt, wie Sie Core Data verwenden.
Es könnte etwas mit dem Prädikat zu tun haben:
%Vor% Wenn Sie einen Abruf erstellt haben, sodass $FETCH_SOURCE
ein NSManagedObjectID
ist, wäre dies ein Problem. Vielleicht (und ich kann nur vermuten) verwenden Sie es, während Sie nach einem Ergebnistyp von NSManagedObjectIDResultType
fragen.
@property (nicht atomisch, behalten) NSNumber * id;
Ist nicht id
ein reserviertes Wort in Objective-C? Haben Sie versucht, diese Eigenschaft in etwas anderes umzubenennen, um zu sehen, ob dies zu Konflikten führt?
Ich habe das gleiche Problem, wenn ich MagicalRecord verwende, aber kein Problem, wenn Xcode CoreData-Quellcode generiert.