2011-01-22 38 views
5

Tôi có một NSString đơn giản và tôi đang chuyển đổi nó để NSData:Quay NSData trở lại văn bản đơn giản NSString

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

Bây giờ tôi muốn nhận được văn bản đơn giản từ đối tượng NSData.
Nếu tôi làm điều đó:

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

- Tôi nhận được chỉ là một biểu hiện hex (nghĩa là < 9c3f473e 02.000.000 0b0000>) và không phải là chuỗi đồng bằng tôi muốn!

Tôi đã thử sử dụng cũng initWithData -

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

Nhưng nó luôn luôn hiển thị gibrish, bất kể đó mã hóa tôi cho nó.

Bạn có thể trợ giúp ở đây không ?? :)

+0

Bạn đã thử NSUTF8StringEncoding thay vì NSASCIIStringEncoding? –

Trả lời

9

Bạn cần phải đơn giản hóa đoạn mã đầu tiên của bạn:

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

Và sau đó đoạn giải mã thứ hai của bạn sẽ làm việc:

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

Lưu ý rằng bạn phải phát hành NSString! Nó không được tự động phát hành. –

+0

Tuyệt vời! nó hoạt động - Cảm ơn rất nhiều !! – Guys

1

Thay đổi sau sẽ hoạt động.

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

Bạn đã thực hiện NData dữ liệu.

Các vấn đề liên quan