2012-10-16 39 views
5

Đây là mã tôi đã cố gắng chuyển đổi NSData thành NSString nhưng chương trình trả về "Chương trình nhận tín hiệu: SIGABRT".Mục tiêu-C Chuyển đổi NSData thành NSString

NSString *string= [NSString stringWithUTF8String:[data bytes]]; 

HOẶC

NSString *string = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding]; 

Có cách nào khác tốt hơn để làm điều đó?

+0

là 'dữ liệu' biến nil của bạn? –

+4

Và nếu nó không phải là nil, nó thực sự chứa các byte của một chuỗi trong mã hóa UTF-8? Đối tượng NSData được tạo ra như thế nào? – rmaddy

+1

@rmaddy Trong khi đó sẽ dẫn đến một kết quả chuỗi không xác định (gần như chắc chắn chỉ là một trở về nil), nó sẽ không dẫn đến một SIGABRT trên dòng đó. –

Trả lời

7

Here's a highly up-voted answer cho biết cách thực hiện. Tóm lại:

NSString *string = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding]; 

Ý tưởng đầu tiên trông giống như một thất bại vì gửi [data bytes]. stringWithUTF8String không được chuẩn bị cho một khoảng trống *. Ý tưởng thứ hai có vẻ như nó sẽ hoạt động, ngay cả với đầu vào nil.

0

Swift-3

enter image description here

let chuỗi = data.base64EncodedString()

+0

trong vội vàng của bạn để làm một "ooh, trong swift ..." bình luận, bạn có thể muốn đọc câu hỏi thực tế của OP – eric

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