2011-11-22 8 views
5

Estoy intentando ajustar mi solicitud HTTP POST con una clave. En otras palabras, quiero convertir esto:Objective C + Reskit: ¿Cómo envuelvo mi diccionario con una clave para evitar problemas de formateo?

{ 
"category_id"=>"1", 
"food_name_token"=>"Pizza", 
"id"=>"1" 
} 

en esto:

{ 
"dish" => 
    { 
    "category_id"=>"1", 
    "food_name_token"=>"Pizza", 
    "id"=>"1" 
    } 
} 

He intentado utilizar el método 'rootKeyPath' en RestKit:

serializationMapping.rootKeyPath = @"dish";  

Pero eso me dio este cadena extrañamente formateada:

{ 
"dish"=> 
    "{ 
    \n \"category_id\" = 1; 
    \n \"food_name_token\" = Pizza; 
    \n id = 1; 
    \n} 
"} 

Utiliza signos iguales y punto y coma en lugar de flechas y comas, y agrega en todos estos saltos de línea y barras invertidas de escape.

¿Alguna idea de por qué? Y cualquier sugerencia sobre lo que puedo hacer en su lugar?

P.S. Estoy usando un servidor de Rails

+0

http://stackoverflow.com/questions/7521683/nsdictionary-description-formatting-problem-treats-structure-like-char-data – SVD

Respuesta

2

descubrí con Restkit puedo envolver atributos usando paréntesis:

[dishMapping mayKeyPath:@"dish[food_name_token]" toAttribute:@"placeToken"]; 

Y esto me da una salida normal sin el formato extraño.

+0

Esta respuesta es un salvavidas. ¡Gracias! – Schrockwell

2
NSDictionary *rootDictionary = [NSDictionary dictionaryWithObject:childDict forKey:@"dish"]; 

Esto debería solucionarlo.

+0

y cómo obtiene Jonathan childDict? –

+0

Supuse que ya te habías ido desde que lo registraste. –

+0

Tu respuesta me hizo darme cuenta de que el problema no está en el método 'rootKeyPath' de RestKit, porque probé tu solución y produce el mismo resultado. En cambio, el problema radica en la forma en que Objective C serializa mi objeto Dictionary. Incluso si está envuelto de la manera correcta, todavía me da estas cadenas extra escapadas que dificultan el análisis del servidor. No responde mi pregunta completamente, pero responde la pregunta que hice como mi título (aunque me di cuenta de que era una pregunta incorrecta, así que probablemente debería cambiarla). Así que solo te daré un voto positivo. –

0

agrega los artículos en un NSArray, a continuación, agregue la matriz en la NSDictionary, así:

NSDictionary *item = [NSDictionary dictionaryWithObjectsAndKeys:[NSArray arrayWithObject:results], @"Parent",nil]; 
NSLog(@"NSDicitonary %@",item); 
NSLog(@"Child values %@",[item valueForKey:@"Parent"]); 
+0

Intenté su solución, pero arrojó el mismo resultado para mí .. –

+0

También leí sobre el uso de matrices desde este enlace: http://stackoverflow.com/questions/7521683/nsdictionary-description-formatting-problem-treats- structure-like-char-data Pero no entiendo cómo implementarlo a su manera. –

Cuestiones relacionadas