Frage

Wir bauen eine iPhone Chat-Anwendung.

Wenn aus dem Browser auf das iPhone Senden einer JSON Chat-Nachricht:

    {"content":"Hi"}

Das iPhone erhält:

    {"content":{"0":72,"1":105,"length":2}}

Aber wollen wir es genau die gleiche Nachricht zu empfangen.

Um dieses Problem zu reproduzieren, zuerst node.js & redis installieren. Dann gilt:

  • Erhalten Sie den Code:

    git clone git://github.com/acani/acani.git
    cd acani
    git submodule update --init
    
  • Starten Sie Redis auf dem Standard-Port.

  • http://github.com/acani/acani-node :

    node acani-node-server.js # run node.js chat server
    # open index.html in a Google Chrome or Firefox and follow instructions.
    
  • Öffnen Lovers.xcodeproj befindet sich in http: // Github .com / acani / acani-chat / Baum / Master / Lovers2 / und ändern LoversAppDelegate.m zunächst die ChatViewController anstelle des HomeViewController laden.

    homeViewController = [[HomeViewController alloc] init]; # comment out this line
    # change the next line to:
    navigationController = [[UINavigationController alloc] initWithRootViewController:[[ChatViewController alloc] init]];
    # Then, build & run.
    
War es hilfreich?

Lösung

Wir dachten, es heraus. Es war nicht das iPhone oder Objective-C überhaupt nicht. Der Konvertierungsfehler passiert auf dem node.js Server. Wir haben vergessen, Anführungszeichen um die Zeichenfolge-Werte des JSON-Objekt zu setzen und so die JSON.stringify() JavaScript-Funktion wurde die Umwandlung der Saiten wie oben gezeigt ... außer wir so etwas wie taten: {"content":Hi}. Wenn wir es geändert: {"content":"Hi"}, es funktionierte gut. Duhh ...

Andere Tipps

Meine Vermutung ist, müssen Sie die Zeichenfolge (JSON) entkommen gesendet werden, stringByAddingPercentEscapesUsingEncoding verwenden und es dann beim Empfang unescape.

Die ersten drei Zahlen sind 072 - in dezimal, dass die ‚H‘. ein "könnte verloren gehen immer aufgrund der Übertragung, das macht mich denken, ohne zu codieren. Es gibt andere Dinge gegen diese Theorie, aber ich denke, es lohnt sich ein Blick auf.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top