2012-10-16 218 views
5

以下是我试图将NSData转换为NSString的代码,但程序返回“Program received signal:SIGABRT”。Objective-C将NSData转换为NSString

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

OR

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

是否有其他更好的方式来做到这一点?

+0

是您'data'变量为零? –

+4

如果它不是零,它实际上是否包含UTF-8编码的字符串的字节? NSData对象是如何创建的? – rmaddy

+1

@rmaddy虽然这会导致未定义的字符串结果(几乎肯定只是一个零返回),但它不会在该行上产生SIGABRT。 –

回答

7

Here's a highly up-voted answer显示如何做到这一点。简而言之:

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

第一个想法看起来像失败,因为发送[data bytes]。 stringWithUTF8String没有为void *准备。第二个想法看起来好像它应该工作,即使没有输入。

0

斯威夫特 - 3

enter image description here

令字符串= data.base64EncodedString()

+0

你急于做一个“哦,快速...”的评论,你可能想阅读OP的实际问题 – eric