2012-10-16 111 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