2012-10-16 11 views
5

NSDataをNSStringに変換しようとしたが、プログラムは「プログラム受信信号:SIGABRT」を返すようなコードです。Objective-C NSStringをNSStringに変換する

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

OR

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

それを行うには、他のより良い方法はありますか?

+0

はあなた 'data'変数はnilですか? –

+4

そして、もしそれがゼロでないなら、実際にはUTF-8エンコーディングで文字列のバイトを含んでいますか? NSDataオブジェクトはどのように作成されましたか? – rmaddy

+1

@rmaddyこれは結果が未定義の文字列結果(ほとんど確実にnilの返り値)になりますが、その行にはSIGABRTが返されません。 –

答えて

7

Here's a highly up-voted answerどのように表示するかを示します。一言で言えば:

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

最初のアイデアがあるため[data bytes]を送信するのでは失敗のように見えます。 stringWithUTF8Stringはvoid *のために用意されていません。 2番目の考え方は、たとえ入力がなくてもうまくいくかのように見えます。

0

スウィフト-3

enter image description here

LET列= data.base64EncodedString()

+0

あなたの急いで "うわー、迅速に..."というコメントをするには、OPの実際の質問 – eric