2012-04-12 17 views
48

Estoy tratando de poner el contenido de un NSDictionary en un NSString para probar, pero no tengo idea de cómo lograr esto. ¿Es posible? si es así, ¿cómo haría uno tal cosa?convertir NSDictionary a NSString

La razón por la que estoy haciendo esto, es que necesito verificar el contenido de un NSDicitonary sin que el depurador se ejecute en mi dispositivo. ya que tengo que eliminar la aplicación en ejecución de la barra multitarea del iOS para poder ver si los valores que estoy guardando en el diccionario aún están disponibles después.

+0

Pregunta similar: http://stackoverflow.com/questions/3424439/view-contents-of-nsmutabledictionary –

Respuesta

118

Puede llamar [Descripción unDiccionario], o en cualquier lugar que se necesita una cadena de formato, sólo tiene que utilizar% @ para sustituir al diccionario:

[NSString stringWithFormat:@"my dictionary is %@", aDictionary]; 

o

NSLog(@"My dictionary is %@", aDictionary); 
+0

ahh ... genial, sí, sé cómo registrarlo, pero no sabía que podrías hacer eso para ponerlo en un nsstring ... genial, –

+0

marcaré tu respuesta una vez que esté permitido también :) –

+0

¿Cómo puedo obtener vale de NSData que están en formato JSON. –

12

Se puede utilizar el método description heredado por NSDictionary de NSObject, o escribe un método personalizado que formatea NSDictionary a tu gusto.

+0

proporciona cierta información adicional aparte de los datos reales del diccionario. – Adeel

51

Above Solutions solo convertirá el diccionario en una cadena pero no podrá convertir esa cadena en diccionario. Para eso es la mejor manera.

Convertir a cadena

NSError * err; 
NSData * jsonData = [NSJSONSerialization dataWithJSONObject:yourDictionary options:0 error:&err]; 
NSString * myString = [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding]; 
NSLog(@"%@",myString); 

convertir de nuevo a Diccionario

NSError * err; 
NSData *data =[myString dataUsingEncoding:NSUTF8StringEncoding]; 
NSDictionary * response; 
if(data!=nil){ 
response = (NSDictionary *)[NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableContainers error:&err]; 
} 
+0

Funcionó para un solo diccionario. ¿Qué pasa si hay varios diccionarios? No puedo convertir de nuevo al diccionario. –

+1

No funciona si el diccionario tiene matrices como valores –

+0

@VineetAshtekar vea el título de esta pregunta. El problema es la conversión de NSDictionary a NSString. –