2011-01-22 3 views
5

Ho una semplice NSString e sto convertendolo in NSData:Passando NSData torna al testo normale NSString

NSData *data = [[NSData dataWithBytes:[[NSString stringWithFormat:@",%@",self.targetId] dataUsingEncoding:NSASCIIStringEncoding] 
           length:[[NSString stringWithFormat:@",%@",self.targetId] lengthOfBytesUsingEncoding:NSASCIIStringEncoding]] retain]; 

Ora voglio ottenere il testo in chiaro dall'oggetto NSData.
se sto facendo che:

NSString* dataStr = [NSString stringWithFormat:@"%@",data]; 

- mi sto solo un'espressione esagonale (cioè < 9c3f473e 02.000.000 0b0000>) e non la stringa di pianura che voglio!

ho provato anche con initWithData -

NSString* dataStr = [[NSString alloc] initWithData:data encoding:NSASCIIStringEncoding]; 

Ma dimostra sempre gibrish, non importa quale codifica dò.

Potete per favore aiutare qui ?? :)

+0

Hai provato NSUTF8StringEncoding invece di NSASCIIStringEncoding? –

risposta

9

È necessario semplificare il primo frammento di codice a:

NSData *data = [[NSString stringWithFormat:@",%@",self.targetId] dataUsingEncoding:NSASCIIStringEncoding] 

E poi il secondo frammento di decodifica funziona:

NSString* dataStr = [[NSString alloc] initWithData:data encoding:NSASCIIStringEncoding]; 
+0

Nota che devi rilasciare NSString! Non è autoreleased. –

+0

Ottimo! Funziona - Grazie mille !! – Guys

1

Le seguenti modifiche funzioneranno.

NSData *data = [[NSString stringWithFormat:@",%@",self.targetId] dataUsingEncoding:NSASCIIStringEncoding] ; 

È stato eseguito il NData dei dati.