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() 

效应初探字符串:

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