2010-10-10 53 views
7

Esta pregunta es un seguimiento en this question. Estoy usando la biblioteca JSON que se encuentra en el http://code.google.com/p/json-framework/.Datos básicos con json


Mi modelo de objetos Data Core tiene una relación de varios a muchos a sí mismo y, como tal, tiene un conjunto para su objeto secundario. En JSON, el conjunto se representa a través de una matriz de ID de objeto. Nada realmente exótico.

Cuando estoy llamando setValuesForKeysWithDictionary en el objeto gestionado con la estructura del objeto que recibo de analizar la cadena JSON, recibo esta excepción:

*** Terminación de aplicación debido a excepción no detectada 'NSInvalidArgumentException', motivo: '- [__ NSArrayM minusSet:]: selector no reconocido enviado a instancia 0x6c7b440'

Si alguien puede explicar por qué, soy todo oídos. También recibo alguna excepción de clave indefinida, pero esto es comprensible (JSON contiene campos adicionales) y totalmente manejable.

Ahora mi pregunta es:

Me estoy perdiendo algo aquí porque en la otra pregunta, la persona que contestó y OP no informó de este problema. Podría parcharlo y manejar la operación defectuosa anulando setValuesForKeysWithDictionary y pasando cuando la clave es una relación, pero esto hace que el código sea mucho menos genérico, lo que me gusta bastante.

Respuesta

5

Creo que el problema es que su deserialización JSON está creando matrices, pero el objeto administrado-muchas relaciones están representadas por conjuntos. Es decir. necesita NSSet en lugar de NSArray. Puede convertir un NSArray a un NSSet haciendo [NSSet setWithArray:theArray].

Cuestiones relacionadas