Ich habe diesen Code unten, dass die Antwort von meinem Server mit Sockets senden Griffe:NSLog zeigen seltsame Zeichen anstelle des JSON
uint8_t buffer[4096];
int len;
NSMutableString *total = [[NSMutableString alloc] init];
while ([inputStream hasBytesAvailable]) {
len = (int)[inputStream read:buffer maxLength:sizeof(buffer)];
if (len > 0) {
NSLog(@"Buffer: %s",buffer);
[total appendString: [[NSString alloc] initWithBytes:buffer length:len encoding:NSASCIIStringEncoding]];
NSLog(@"Receive: %@, len: %d",total,len);
NSLog(@"len: %d, receive: %@",len,total);
}
}
Mein Server eine Textdatei wie folgt an:
[{"name_user":"stack overflow","user_key":"XXXXXXX","type":21}]
Das Problem mit diesem Code ist, wenn ich dieses JSON sende, zeigt das Konsolenprotokoll die Länge dieses JSON an. Aber wenn ich sende dieses JSON unter:
[[{"name_user":"stack overflow","user_key":"XXXXXXX","type":21}],[{"name_user":"lacrifilm","user_key":"XXXXXXX","type":21}]]
, dass zwei Werte in JSON repräsentiert das Konsolenprotokoll zeigt:
Buffer: ~
Receive: ~
len: 184, receive: ~
ich glaube, das Problem ist nicht in meinem Server, denn wenn ich es ist, wäre bekommen: Receive: ~, len: 184
, anstelle von Receive: ~
ohne len: 184
wie wir im zweiten Aufruf von NSLog
in meinem Befehl oben gesehen haben.
Wie kann ich dieses Problem lösen?
Mögliche Duplikat von [Warum nicht Arbeit von NSData zu String? Swift] (http://stackoverflow.com/questions/36894972/why-doesnt-cast-work-from-nsdata-to-string-swift) – Larme