2011-01-22 11 views
5

Mam proste NSString i jestem przekształcenie go do NSData:Włączanie NSData z powrotem do zwykłego tekstu NSString

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

Teraz chcę uzyskać tekst z obiektu NSData.
Jeśli robię, że:

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

- Dostaję tylko wyrażenie hex (tj < 9c3f473e 02000000 0b0000>), a nie zwykły ciąg chcę!

Próbowałem również za pomocą initWithData -

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

Ale to zawsze pokazuje gibrish, bez względu na kodowanie daję.

Czy możesz pomóc tutaj? :)

+0

Próbowałaś NSUTF8StringEncoding zamiast NSASCIIStringEncoding? –

Odpowiedz

9

Trzeba uprościć pierwszy fragment kodu do:

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

a następnie twój drugi dekodowania fragment będzie działać:

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

Pamiętaj, że musisz zwolnić NSString! To nie jest autoreleased. –

+0

Świetnie! to działa - wielkie dzięki! – Guys

1

Wykonaj następujące zmiany to zadziała.

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

Zrobiłeś NData danych.