2012-04-12 15 views
48

Sto cercando di mettere il contenuto di un NSDictionary in un NSString per il test, ma non hanno idea di come raggiungere questo obiettivo. È possibile? se sì, come farebbe una cosa del genere?convertire NSDictionary a NSString

La ragione per cui sto facendo questo, è che ho bisogno di controllare il contenuto di un NSDicitonary senza il debugger in esecuzione sul dispositivo. come devo eliminare l'applicazione in esecuzione dalla barra multitasking del ios in modo da poter vedere se i valori che sto salvando nel dizionario sono ancora disponibili in seguito.

+0

domanda simile: http://stackoverflow.com/questions/3424439/view-contents-of-nsmutabledictionary –

risposta

118

È possibile chiamare [descrizione aDictionary], o dovunque si avrebbe bisogno di una stringa di formato, basta usare% @ di stare in per il dizionario:

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

o

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

ahh .. fresco, sì lo so come accedere, ma non sapeva che si poteva fare per ottenerlo in un NSString .. fresco, –

+0

marchio malato la vostra risposta, una volta mi è permesso troppo :) –

+0

Come posso ottenere vale da NSData che sono in formato JSON. –

12

È possibile utilizzare il metodo description ereditato da NSDictionary da NSObject, o di scrivere un metodo personalizzato che formatta NSDictionary a proprio piacimento.

+0

fornisce alcune informazioni extra oltre ai dati effettivi del dizionario. – Adeel

51

soluzioni di cui sopra si convertiranno solo dizionario nella stringa, ma non è possibile convertire indietro quella stringa al dizionario. Per questo è il modo migliore.

Converti String

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

Convertire Torna dizionario

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

Ha funzionato per singolo dizionario. Cosa succede se ci sono più dizionari? Non riesco a convertire nuovamente nel dizionario. –

+1

Non funziona se il dizionario ha matrici come valori –

+0

@VineetAshtekar, vedere il titolo di questa domanda. Il problema è la conversione di NSDictionary in NSString. –