60 votes

convertir NSDictionary en NSString

J'essaie de mettre le contenu d'un NSDictionary dans une NSString pour le tester, mais je ne sais pas comment y parvenir. Est-il possible? si oui comment ferait-on une chose pareille ?

La raison pour laquelle je fais cela, c'est que je dois vérifier le contenu d'un NSDicitonary sans que le débogueur ne s'exécute sur mon appareil. car je dois supprimer l'application en cours d'exécution de la barre multitâche de l'ios afin que je puisse voir si les valeurs que j'enregistre dans le dictionnaire sont toujours disponibles par la suite.

131voto

Jay Wardell Points 1216

Vous pouvez appeler [aDictionary description], ou partout où vous auriez 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);

81voto

Danial Hussain Points 2430

Les solutions ci-dessus ne convertiront que le dictionnaire en chaîne, mais vous ne pouvez pas reconvertir cette chaîne en dictionnaire. Pour cela, c'est le meilleur moyen.

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 Retour au dictionnaire

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

13voto

dasblinkenlight Points 264350

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

1voto

alicanozkara Points 1908

si vous aimez utiliser pour URLRequest httpBody

 extension Dictionary {

    func toString() -> String? {
        return (self.compactMap({ (key, value) -> String in
            return "\(key)=\(value)"
        }) as Array).joined(separator: "&")
    }

}

// imprimer: Champs=sdad&ServiceId=1222

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X