Ich habe ein Core Data Modell eingerichtet, wo ich zwei Objekte habe, sagen Person und Adresse. Eine Person hat eine Adresse und eine Adresse kann vielen Personen gehören. Ich habe es in Kerndaten als solche modelliert (so zeigt der Doppelpfeil auf Person, während der einzelne Pfeil auf Adresse geht)Core Data gibt NSManagedObject anstelle der Concrete-Klasse zurück, aber nur bei Verwendung. Accessor
Ich habe dann zwei Klassen für diese Objekte erstellt und einige benutzerdefinierte Methoden in diesen Klassen implementiert. Im Core Data Model habe ich die Namen der Klassen in sie eingegeben.
Wenn ich eine Adresse von Core Data direkt abrufe, gibt es mir die konkrete konkrete Klasse und ich kann meine eigenen Methoden darauf aufrufen.
Wenn ich andererseits eine Person hole und versuche, auf die Adresse durch Person zuzugreifen (zB: person.address), bekomme ich ein NSManagedObject zurück, das eine Adresse ist (zB: Ich kann zu allen Kerndatenattributen I gelangen Ich habe es eingestellt, aber es reagiert nicht auf meine benutzerdefinierten Methoden, weil es vom Typ NSManagedObject statt Adresse ist. Ist das eine Einschränkung der Core Data oder mache ich etwas falsch? Wenn es eine Beschränkung gibt, gibt es irgendwelche Arbeitsumstände?
Es ist keine Beschränkung der Core Data; Sie machen sicherlich etwas falsch. Was genau meinen Sie mit "es reagiert nicht auf meine benutzerdefinierten Methoden, weil es vom Typ NSManagedObject statt Adresse ist"? Erhalten Sie eine Selektor nicht erkannte Ausnahme? Beschwert sich der Compiler? Zeigen Sie uns etwas Code und Ausgabe oder es wird schwer sein, das Problem zu diagnostizieren. –
Es ist also ein Laufzeitfehler (kein Compiler), weil NSManagedObject nicht auf den Namen meiner benutzerdefinierten Methode reagiert. Derselbe Fehler, den Sie erhalten, wenn Sie den Namen Ihrer Klasse im Core Data Modeler nicht angeben. – rustyshelf