Fehlermeldung: this class is not key value coding-compliant for the key managedObjectContext.

  • Fehlermeldung: this class is not key value coding-compliant for the key managedObjectContext.

    Hallo,

    dies ist mein erster Post in diesem Forum. Ich bin durch den Buchautor Amin Negm-Awad auf dieses Forum gekommen, weil ich derzeit Objective C und Cocoa lerne und komme aus dem Ruhrgebiet. Es würde mich freuen, wenn ich mit euch gemeinsam wachsen könnte.

    Ich lerne gerade ObjectiveC mit dem Buch »Objective C und Cocoa Band 1« von Amin Negm-Awad. Dabei bin ich beim zweiten Kapitel, wo beim Übungsprogramm »Converter« eine Verbindung zwischen Model, View und Controller geschaffen wird. Ich bin ziemlich sicher, dass ich aufmerksam alle Schritte mitgemacht habe, die im Buch bis zur Verknüpfung der Formatter für die Tabellenspalten vorgenommen werden. Allerdings erhalte ich im Compiler die Fehlermeldungen

    2011-05-18 11:35:55.708 Converter[11886:a0f] [ valueForUndefinedKey:]: this class is not key value coding-compliant for the key managedObjectContext.

    2011-05-18 11:35:55.725 Converter[11886:a0f] [ valueForUndefinedKey:]: this class is not key value coding-compliant for the key managedObjectContext.


    sobald sich das Model innerhalb des »Objekte-Fensters« (da wo ich die verschiedenen Symbole reinziehe) befindet. Lösche ich das Model, so läuft der Debugger durch. Habe diesem Forum-Thread ein Archiv mit meinem Lernprogramm aus dem Buch beigelegt.
  • Ist ja großartig, dass mir direkt der Buchautor antwortet. Erstmal mein Kompliment für die lockere und somit eingängige Formulierung im Buch. Da merkt man sofort, dass es keine Studiums- oder Fließbandarbeit war und jemand mit Herz dahinter war.

    "Du hast das Projekt nicht mit Core Data-Unterstützung angelegt."
    Kann ich das nachträglich machen? Wenn ja - wie?
  • Danke

    Nachträglich habe ich das nie gemacht. Du kannst mal probieren, MyDocument nicht von NSDocument, sondern von NSPersistentDocument abzuleiten. Das dürfte aber allenfalls testweise funktionieren. Eigentlich hätte dir schon auffallen müssen, dass es im Projekt keine Gruppe Models gibt.

    Die Krux ist, dass sich die UI von Xcode etwas geändert hat und man jetzt bei der Projektanlage den Core Data-Supperot (so wie den für Dokumente, den du offenkundig gefunden hast) gesondert einstellen muss.
    Es hat noch nie etwas gefunzt. To tear down the Wall would be a Werror!
    25.06.2016: [Swift] gehört zu meinen *Favorite Tags* auf SO. In welcher Bedeutung von "favorite"?
  • Nur mal noch so am Rande:
    Höre von vielen diesen beschissenen Fehler, habe auch zwei Tage gesucht.
    Fehler sind oft Outlets, die nicht mehr im Header definiert sind, aber trotzdem im IB noch eine 'Verklöppelung' haben, die man löschen muss.
  • Hallo,

    ich habe das selbe Problem bei dem Klick auf RUN

    Ich bin im Buch (Band 1) auch gerade an der Stelle wo das Model hinzugefügt wurde und die ganzen Verbindungen erstellt wurden.

    Und jetzt wollte ich es testen und es kommt immer dieser Fehler:

    Quellcode

    1. 2011-07-09 21:03:48.734 Converter[4406:903] [<MyDocument 0x10042f3f0> valueForUndefinedKey:]: this class is not key value coding-compliant for the key managedObjectContext .
    2. 2011-07-09 21:03:48.743 Converter[4406:903] [<MyDocument 0x1001042f0> valueForUndefinedKey:]: this class is not key value coding-compliant for the key managedObjectContext .



    Und ich habe das Projekt mit Core-Data erstellt ;)

    Ich hatte das Programm nämlich auch schonmal bis zum Model erstellt, dann festgestellt, dass ich es ohne Core-Data erstellt hatte. Dann Hatte ich das Model nachträglich hinzugefügt und da kam auch schon dieser Fehler.

    Dann hab ich das hier gelesen, das Projekt gelöscht und alles nochmal neu mit Core-Data erstellt.

    Aber leider der selbe Fehler. :(

    Was kann ich tun?
  • Aber das hat doch zum Thema gepasst ich hab genau den selben Fehler.

    Naja egal.

    Was kann ich denn nun tun, damit ich das zum laufen bekomme?

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von _Micha_ ()

  • @micha

    Amin Negm-Awad schrieb:

    Nachträglich habe ich das nie gemacht. Du kannst mal probieren, MyDocument nicht von NSDocument, sondern von NSPersistentDocument abzuleiten. Das dürfte aber allenfalls testweise funktionieren. Eigentlich hätte dir schon auffallen müssen, dass es im Projekt keine Gruppe Models gibt.


    ich glaube das nachträglich einzufügen bedeutet 10mal mehr arbeit als einfach ein neues Projekt aufzusetzen. Dann das häckchen bei CoreData nicht vergessen ;)

    PS: micha, Kay meinte nicht dich sondern das ganze Thema (Thread). Es gibt ein Separates Unterforum für Amin sein Buch.
    俺の世界にようこそ
  • Plany schrieb:

    PS: micha, Kay meinte nicht dich sondern das ganze Thema (Thread). Es gibt ein Separates Unterforum für Amin sein Buch.



    Aso hab mich schon gewundert ? ;)

    Ich hab das ganze Projekt ja schon neu mit Core-Data erstellt, aber es geht immer noch nicht.

    Was kann ich denn nun tun um es zum Laufen zu bekommen??

    Hier nochmal mein Projekt:
  • Die Fehlermeldung ist doch eindeutig. MyDocument hat keine Property managedObjectContext.
    Leite MyDocument von NSPersistentDocument statt von NSDocument ab. Lies die die Doku dazu durch und implementier die fehlenden Methoden.

    Chris
    Man macht einfach solange irgendwelche Dinge, bis man tot ist.
    Und dann bekommen die anderen Kuchen.
  • @chris
    Leite MyDocument von NSPersistentDocument statt von NSDocument ab.


    Das war automatisch schon so da gestanden. Ich hab es aber auf Grund dieses Threads mal mit NSDocument versucht. Hat aber nix geholfen. Ich hatte es nur noch nicht wieder geändert bevor ich das Projekt hochlud.

    implementiert war dazu aber nichts.

    Ich hab mir auch grad mal die Docu durchgelesen, aber ich werde daraus nicht schlau. Ich glaub dazu muss ich mich noch bissl länger mit Xcode beschäftigen.

    Da steht zwar das hier:
    managedObjectContext
    Returns the managed object context for the receiver.

    - (NSManagedObjectContext *)managedObjectContext
    Return Value
    The managed object context for the receiver.

    Discussion
    If a managed object context for the receiver does not exist, one is created automatically. You override this method to customize the creation of the persistence stack.


    Aber ich werde daraus nicht schlau. Was soll ich jetzt womit überschreiben??? ?(


    dann sollte es schon reichen dann natürlich noch den ArrayController mit den context aus "MyDocument" verbinden


    Der Array-Controller ist bei mir an den File´s Owner gebunden und der ModelKeyPath auf managedObjectContext gesetzt

    Das meinst du doch, oder? Wenn nicht, blick ich nicht durch. ;(
  • OK. Ich hab es gelöst :D

    Ich hab einfach das "@private" aus der MyDocument.h gelöscht und schon ging es.
    :D :D :D :D


    Trotzdem DANKE an alle.

    Vielleicht kann mir einer noch sagen was ich mit dem löschen bewirkt habe (außer das die App geht ;))