2012-10-16 6 views
5

Hier sind die Code Ich habe versucht, NSData in NSString konvertieren, aber das Programm zurück "Programm empfangen Signal: SIGABRT".Objective-C Convert NSData in NSString

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

ODER

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

Gibt es einen anderen besseren Weg, es zu tun?

+0

Ist Ihr 'data' Variable nil? –

+4

Und wenn es nicht Null ist, enthält es tatsächlich die Bytes einer Zeichenfolge in UTF-8-Codierung? Wie wurde das NSData-Objekt erstellt? – rmaddy

+1

@rmaddy Während dies zu einem undefinierten String-Ergebnis (fast sicher nur eine Null-Rückgabe) führen würde, würde es nicht zu einem SIGABRT in dieser Zeile führen. –

Antwort

7

Here's a highly up-voted answer das zeigt, wie es geht. Auf den Punkt gebracht:

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

Die erste Idee sieht aus wie ein wegen fehlschlagen [data bytes] senden. stringWithUTF8String ist nicht auf ein void * vorbereitet. Die zweite Idee sieht so aus, als ob sie funktionieren sollte, sogar mit Nulleingabe.

0

Swift-3

enter image description here

let string = data.base64EncodedString()

+0

in Ihrer Eile, einen Kommentar "Ooh, in swift ..." zu machen, möchten Sie vielleicht die eigentliche Frage des OP lesen – eric