web-dev-qa-db-fra.com

convertir NSDictionary en NSString

J'essaie de mettre le contenu d'un NSDictionary dans une chaîne NSString à des fins de test, mais je ne sais pas du tout comment y parvenir. C'est possible? si oui, comment ferait-on une telle chose?

La raison pour laquelle je le fais est-il nécessaire de vérifier le contenu d'un NSDicitonary sans que le débogueur ne s'exécute sur mon appareil? comme je dois supprimer l'application en cours d'exécution de la barre multitâche de l'ios pour que je puisse voir si les valeurs que je sauvegarde dans le dictionnaire sont toujours disponibles par la suite.

56
C.Johns

Vous pouvez appeler [description du dictionnaire], ou n'importe où vous avez besoin d'une chaîne de format, utilisez simplement% @ pour remplacer le dictionnaire:

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

ou

NSLog(@"My dictionary is %@", aDictionary);
124
Jay Wardell

Above Solutions convertira uniquement le dictionnaire en chaîne, mais vous ne pouvez pas reconvertir cette chaîne en dictionnaire. Pour cela c'est la meilleure façon.

Convertir en chaîne

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

Convertir au dictionnaire

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

Vous pouvez utiliser la méthode description héritée par NSDictionary de NSObject, ou écrire une méthode personnalisée formatant NSDictionary à votre guise.

12
dasblinkenlight