2015-02-03 1 views
2

네트워킹에 Alamofire을 사용하고 iOS 앱에서 서버 응답을 구문 분석하는 데 SwiftyJSON을 사용하고 있습니다.JSON 데이터를 구문 분석하는 동안 알 수없는 유형입니다. iOS 7에서 SwiftyJSON으로

난 항상 여기이 println(JSON(data!))

을하는 동안 내 요청 코드 unknown를 얻을 :

request ==== <NSMutableURLRequest: 0x15e9a4e0> { URL: http://httpbin.org/get?foo=bar } 
response ==== Optional(<NSHTTPURLResponse: 0x15ddc910> { URL: http://httpbin.org/get?foo=bar } { status code: 200, headers { 
"Access-Control-Allow-Credentials" = true; 
"Access-Control-Allow-Origin" = "*"; 
Connection = "keep-alive"; 
"Content-Length" = 430; 
"Content-Type" = "application/json"; 
Date = "Wed, 04 Feb 2015 09:12:45 GMT"; 
Server = nginx; 
} }) 
error ==== nil 
json ==== unknown 
data ==== Optional(<7b0a2020 22617267 73223a20 7b0a2020 20202266 6f6f223a 20226261 72220a20 207d2c20 0a202022 68656164 65727322 3a207b0a 20202020 22416363 65707422 3a20222a 2f2a222c 200a2020 20202241 63636570 742d456e 636f6469 6e67223a 2022677a 69703b71 3d312e30 2c636f6d 70726573 733b713d 302e3522 2c200a20 20202022 41636365 70742d4c 616e6775 61676522 3a202266 723b713d 312e302c 656e3b71 3d302e39 2c64653b 713d302e 382c7a68 2d48616e 733b713d 302e372c 7a682d48 616e743b 713d302e 362c6a61 3b713d30 2e35222c 200a2020 20202248 6f737422 3a202268 74747062 696e2e6f 7267222c 200a2020 20202255 7365722d 4167656e 74223a20 224f7545 73744d6f 6e43616d 696f6e2f 636f6d2e 50697865 6c734163 6164656d 792e4f75 4573744d 6f6e4361 6d696f6e 2028313b 204f5320 56657273 696f6e20 372e312e 32202842 75696c64 20313144 32353729 29220a20 207d2c20 0a202022 6f726967 696e223a 20223139 372e3134 2e31302e 3234222c 200a2020 2275726c 223a2022 68747470 3a2f2f68 74747062 696e2e6f 72672f67 65743f66 6f6f3d62 6172220a 7d0a>) 

내가 뭔가 잘못하고 있는가 : 여기

Alamofire.request(.GET, URLString: "http://httpbin.org/get", parameters: ["foo": "bar"]) 
     .response { (request, response, data, error) in 
      println("request ==== \(request)") 
      println("response ==== \(response)") 
      println("error ==== \(error)") 
      println("json ==== \(JSON(data!))") 
      println("data ==== \(data)") 
    } 

는 그리고 나의 콘솔 출력 ?

+1

그리고'println (data)'만하면됩니까? – Hackerman

+0

내 콘솔에 인코딩 된 데이터가 있습니다. –

+0

출력을 게시 할 수 있습니까? – Hackerman

답변

1

이 문제는 iOS7에서 인 Alamofire 라이브러리와 관련이 있다고 생각합니다. AFNetworking으로 작업하고 이상한 문제없이 SwiftyJSON으로 웹 서비스 응답을 구문 분석하면 끝납니다.

3

인쇄되는 unknown 값은 SwiftyJSON에서 나옵니다. 잘못된 이니셜 라이저를 사용하고있는 것으로 보입니다. 대신 다음을 시도해보십시오.

var parsingError: NSError? 
let json = JSON(data: dataFromServer, error: &error) 

println(json) 
println(parsingError) 

이것은 SwifftyJSON으로 보내는 NSData에 대해 NSJSONSerialization.JSONObjectWithData을 실행합니다. 성공할 경우 유효한 JSON 개체를 받게됩니다. 실패 할 경우 unknown 유형을 계속 가져 오지만 parsingError은 구문 분석에 실패한 이유를 알려줍니다.

마지막 팁 중 하나는 dataFromServer을 올바르게 시각화 할 수 있다는 것입니다. 당신이 그렇게 할 수있는 방법이 있습니다.

if let dataFromServer = dataFromServer as? NSData { 
    if let encodedData = NSString(data: dataFromServer, encoding: NSUTF8StringEncoding) { 
     println(encodedData) 
    } 
} 

희망 하시겠습니까?

관련 문제