2017-07-27 22 views
0

配列などのHTTPリクエスト・レスポンスを作るスウィフトは、私はこの迅速なhttpリクエストを持っている

var request = URLRequest(url: URL(string: "http://www.web.com/ajax/logreg.php")!) 
    request.httpMethod = "POST" 
    let pass = pass_text_field.text!.addingPercentEncoding(withAllowedCharacters: .queryValueAllowed)! 
    let postString = "app_reg_pass=\(pass)" 
    request.httpBody = postString.data(using: .utf8) 
    let task = URLSession.shared.dataTask(with: request) { data, response, error in 
     guard let data = data, error == nil else { 
      print("error=\(error!)") 
      return 
     } 
     if let httpStatus = response as? HTTPURLResponse, httpStatus.statusCode != 200 {       print("statusCode should be 200, but is \(httpStatus.statusCode)") 
      print(response!) 
     } 

     let responseString = String(data: data, encoding: .utf8) 
     print(responseString!) 
    } 
    task.resume() 

REPONSE文字列:

Array 
(
    [0] => 1 
    [1] => Murad 
) 

と私は治療しようとすると、このコードへの私の応答はarray.Butですそれは私がこれを行うことができるように配列に応答を回すことができます response[0]

+1

エラーは何ですか? – pierreafranck

+0

@pierreafranck 'Type 'URLResponse?'サブスクリプトのメンバーはありません。 – sakoaskoaso

+0

@ sakoaskoasoあなたの応答はJSON形式ですか? –

答えて

2

結果はJSONオブジェクトとして入力される可能性が高いため、結果を使用する前に逆シリアル化する必要があります。

do { 
    let jsonData = try JSONSerialization.jsonObject(with: data, options: .mutableContainers) as! [Any] 

    print(jsonData[0] as! Int) // should print "1" 
    print(jsonData[1] as! String) // should print "Murad" 

} catch { 
    print("An error occurred") 
} 
+0

'NSDictionary '(0x1033a4208)にタイプ' __NSArrayM '(0x1033a2a98)の値をキャストできませんでした。' – sakoaskoaso

+0

@sakoaskoaso今すぐ試してみて、代わりに配列にキャストするように変更しました – Paolo

+0

結果をキャストする必要があります。辞書の配列: jsonData = JSONSerialization.jsonObject(with:data、options:.mutableContainers)を! [[String:Int]] – Maxime

関連する問題