2010-10-10 12 views
7

Cette question est une suite à this question. J'utilise la bibliothèque JSON trouvée au http://code.google.com/p/json-framework/.Données de base avec json


Mon modèle d'objet de données de base a une relation plusieurs-à-plusieurs avec lui-même et, en tant que tel, a un ensemble pour son sous-objet. En JSON, l'ensemble est représenté par un tableau d'identifiants d'objets. Rien de vraiment exotique.

Quand je fais appel setValuesForKeysWithDictionary sur l'objet géré avec la structure de l'objet que je reçois de l'analyse de la chaîne JSON, je reçois cette exception:

*** Mettre fin application en raison d'une exception non interceptée « NSInvalidArgumentException », raison: '- [__ NSArrayM minusSet:]: non reconnu sélecteur envoyé à l'instance 0x6c7b440'

Si quelqu'un peut expliquer pourquoi, je suis tout ouïe. Je reçois également une exception de clé indéfinie mais cela est compréhensible (JSON contient des champs supplémentaires) et totalement gérable.

Maintenant, ma question est la suivante:

Suis-je manque quelque chose ici parce que dans l'autre question, la personne qui a répondu et OP n'a signalé aucune de ce problème. Je pourrais patcher et gérer l'opération défectueuse en remplaçant setValuesForKeysWithDictionary et en passant lorsque la clé est une relation mais cela rend le code beaucoup moins générique que j'aime bien.

Répondre

5

Je pense que le problème est que votre désérialisation JSON crée des tableaux, mais les relations objet-à-plusieurs sont représentées par des ensembles. C'est à dire. vous avez besoin de NSSet plutôt que de NSArray. Vous pouvez convertir un NSArray en NSSet en faisant [NSSet setWithArray:theArray].

Questions connexes