2010-10-10 19 views
7

Questa domanda è un seguito su this question. Sto usando la libreria JSON trovata a http://code.google.com/p/json-framework/.Core Data with json


Il mio modello di oggetti Dati principali ha una relazione molti-a-molti con se stesso e, come tale, ha un set per il suo oggetto secondario. In JSON, il set è rappresentato attraverso una serie di ID oggetto. Niente di veramente esotico.

Quando mi chiamo setValuesForKeysWithDictionary sull'oggetto gestito con la struttura dell'oggetto che ricevo da parsing della stringa JSON, ricevo questa eccezione:

*** Chiusura di applicazione a causa di eccezione non identificata 'NSInvalidArgumentException', motivo: '- [__ NSArrayM minusSet:]: non riconosciuta selettore inviato esempio 0x6c7b440'

Se qualcuno può spiegare perché, io sono tutto orecchi. Ricevo anche alcune eccezioni dalla chiave non definita, ma questo è comprensibile (JSON contiene campi aggiuntivi) e totalmente gestibile.

Ora la mia domanda è:

Mi manca qualcosa qui perché l'altra questione, la persona che ha risposto e OP non ha segnalato nulla di tutto questo problema. Potrei patcharlo e gestire l'operazione errata ignorando setValuesForKeysWithDictionary e passando quando la chiave è una relazione, ma questo rende il codice molto meno generico che mi piace molto.

risposta

5

Penso che il problema è che la deserializzazione JSON sta creando array, ma l'oggetto gestito su molte relazioni sono rappresentate da set. Cioè hai bisogno di NSSet piuttosto che NSArray. È possibile convertire un NSArray in un NSSet facendo [NSSet setWithArray:theArray].