2010-10-10 17 views
7

Diese Frage ist ein Follow-up auf this question. Ich verwende die JSON-Bibliothek unter http://code.google.com/p/json-framework/.Core Data mit JSON


Mein Core Data-Objektmodell hat eine Viele-zu-Viele-Beziehung zu sich selbst und hat als solches ein Set für sein Subobjekt. In JSON wird die Menge durch ein Array von Objekt-IDs dargestellt. Nichts wirklich Exotisches.

Als ich setValuesForKeysWithDictionary auf das verwaltete Objekt anzurufenden mit der Objektstruktur I aus Parsen der JSON-String bekommen, erhalte ich diese Ausnahme:

*** app aufgrund nicht abgefangene Ausnahme Abschluss ‚NSInvalidArgumentException‘, Grund: '- [__ NSArrayM minusSet:]: unerkannt Selektor gesendet Instanz 0x6c7b440'

Wenn jemand erklären kann, warum, ich bin ganz Ohr. Ich erhalte auch eine Ausnahme von undefinierten Schlüssel, aber das ist verständlich (JSON enthält zusätzliche Felder) und vollständig überschaubar.

Nun meine Frage:

Bin ich hier etwas, weil in der anderen Frage fehlt, die Person, die beantwortet und OP hat nicht dieses Problem melden. Ich könnte es patchen und die fehlerhafte Operation behandeln, indem ich setValuesForKeysWithDictionary überschreibe und passiere, wenn der Schlüssel eine Beziehung ist, aber das macht den Code viel weniger generisch, was ich ziemlich mag.

Antwort

5

Ich denke, das Problem ist, dass Ihre JSON-Deserialisierung Arrays erstellt, aber verwaltete Objekt zu viele Beziehungen werden durch Mengen dargestellt. I.e. Sie benötigen NSSet anstelle von NSArray. Sie können ein NSArray in ein NSSet konvertieren, indem Sie [NSSet setWithArray:theArray] ausführen.