2017-07-27 57 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() 

效應初探字符串:

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

而我的這個代碼響應array.But當我嘗試治療作爲數組的響應,它給了我一個錯誤。我如何將響應轉換爲數組,所以我可以做到這一點 response[0]

+1

什麼是錯誤? – pierreafranck

+0

@pierreafranck'輸入'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

'無法將類型'__NSArrayM'(0x1033a2a98)的值轉換爲'NSDictionary'(0x1033a4208).' – sakoaskoaso

+0

@sakoaskoaso現在嘗試,我改變它以投射到數組字典 – Paolo

+0

您必須將結果轉換爲Array of dictionary: let jsonData = try JSONSerialization.jsonObject(with:data,options:.mutableContainers)as! [[String:Int]] – Maxime