Tengo una estructura JSON comoRestKit: cómo definir opcional (anidada) keypaths
{
"objects":{
"person":[
{
"id":"1",
"name":"my name"
"contacts":{
"address":{
"id":"1",
"street":"mystreet",
"country":"mycountry"
},
"email":{
"id":"1",
"emailAddress":"[email protected]"
}
},
},
...
y estoy tratando de hacer un mapa de la siguiente manera:
[personMapping mapKeyPath:@"contacts.address" toRelationship:@"address" withMapping:addressMapping];
Esto funciona bien mientras existan contactos. Pero si no hay dirección/correo electrónico, este elemento no se envía, lo que lleva a una excepción en RKMappingOperation#applyRelationshipMappings
: value = [self.sourceObject valueForKeyPath: relationshipMapping.sourceKeyPath];
este momento, mi solución es utilizar @[email protected]
, pero espero que hay una mejor solución para esto ...
Muchas gracias!
EDIT: La excepción ocurre entonces si no se envían contactos en absoluto; entonces, el JKDictionary se parece a esto (de nuevo en RKMappingOperation#applyRelationshipMappings
):
{
contacts = "";
name = myName;
id = 1;
...
}
¿Cuál es la excepción que se arroja? también, ¿qué versión de RestKit usas? – mja
@mja: versión 0.9.3, la excepción es '[<__ NSCFConstantString 0x3fe1bc> valueForUndefinedKey:]: esta clase no es un valor clave que cumpla con la codificación para la dirección de la clave. – swalkner
Intenté un caso similar en uno de mis proyectos basados en RestKit y No tengo excepción alguna. Sin embargo, utilizo el último RestKit de git, rama principal. Intente lo siguiente (para verificar si obtiene la misma excepción): agregue un mapeo de relación a una clave inexistente, ej. "contacts.whatever" (mantener todas las asignaciones sin cambios) y analizar JSON que contiene tanto la dirección como el correo electrónico. – mja