0

SwifyJSON を使用して、socket.io を介して iOS アプリに送信された JSON を解析しています。.dictionaryValue応答はnil. サーバーからデータが送信される方法は次のとおりです。

socket.emit('hasBeenMatched', {user: JSON.stringify(currentUser)});

これが私のiOSアプリにあるものです:

    socket.on("hasBeenMatched", callback: {data, ack in
        println("got response after requesting match");

        let user = JSON(data!)
        println(user)
        println(user[0])
        println(user[0]["user"])
        println(user[0]["user"].dictionaryValue)

    })

そして、そのコードの出力は次のとおりです。

got response after requesting match
[
  {
    "user" : "{\"_id\":\"5511c3d8abcdc2fcf7b8fe4b\",\"email\":\"j\",\"password\":null,\"firstname\":\"j\",\"lastname\":\"j\",\"age\":9,\"radius\":\"9\",\"__v\":0,\"wantsToBeMatched\":true,\"matchedWith\":\"k k\"}"
  }
]
{
  "user" : "{\"_id\":\"5511c3d8abcdc2fcf7b8fe4b\",\"email\":\"j\",\"password\":null,\"firstname\":\"j\",\"lastname\":\"j\",\"age\":9,\"radius\":\"9\",\"__v\":0,\"wantsToBeMatched\":true,\"matchedWith\":\"k k\"}"
}
{"_id":"5511c3d8abcdc2fcf7b8fe4b","email":"j","password":null,"firstname":"j","lastname":"j","age":9,"radius":"9","__v":0,"wantsToBeMatched":true,"matchedWith":"k k"}
[:]

私のコードの別の部分には、次のコードがあります。

let request = Alamofire.request(.POST, "http://localhost:3000/api/users/authenticate", parameters: params)
request.validate()
request.response { [weak self] request, response, data, error in
    if let strongSelf = self {
        // Handle various error cases here....

        var serializationError: NSError?

        if let json: AnyObject = NSJSONSerialization.JSONObjectWithData(data!, options: .AllowFragments, error: &serializationError) {
            println(JSON(json).dictionaryValue)

            // Story board navigation
        } else {
            //Handle error case
        }
    }
}

編集: printlnAlamofire 応答処理の出力は次のようになります。

[_id: 5511c3d8abcdc2fcf7b8fe4b, password: null, __v: 0, lastname: j, age: 9, wantsToBeMatched: true, firstname: j, radius: 9, email: j, matchedWith: k k]

私が疑問に思っているのは、なぜprintln(user[0]["user"].dictionaryValue)結果が になるの[:]ですか?

4

1 に答える 1

0

それを理解しましたが、私の解決策は SwiftyJSON とは関係ありません(私はまだ興味があります)。サーバーがソケット経由でデータを送信する方法を変更しました。に変更socket.emit('hasBeenMatched', {user: JSON.stringify(currentUser)});しましたsocket.emit('hasBeenMatched', {user: currentUser});。基本的に、手動の JSON 化を削除しました。

于 2015-03-25T01:43:34.113 に答える