迁移Alamofire swift2来自swift 3

时间:2017-01-23 10:51:38

标签: swift3 alamofire

以前在我的APP中,当我打电话给服务器时,如果有任何错误,我会做以下事情:

Alamofire.request(mutableURLRequest).responseJSON{
   response in if let JSON = response.result.value{
       if JSON.count != 0{
           let errorList = JSON["responseErrorsList"] as? NSArray
                for error in errorList!{
                    let erro: String = error as! String
           switch erro{
                 case "PersonRequired":

随着从swift 2迁移到swift 4,我遇到了问题,因为List错误变为零,但JSON的结果如下:

["Rate": , "Level": , "Code": , "ID": 0, "Zone": , "Address": , "ErrorsListServer": <__NSSingleObjectArrayI 0x17400ba90>( InvalidCode ) , "SubZone": ]

有谁知道如何访问“ErrorsListServer”字段并获取在这种情况下为“InvalidCode”的错误。

我已经实施并且不起作用的是以下内容:

if let JSON = response.result.value as? [String: Any]{
if (JSON as AnyObject).count != 0{
  let errorList = JSON["responseErrorsList"] as? [[String: Any]]

1 个答案:

答案 0 :(得分:1)

在您的JSON响应中,您需要访问密钥ErrorsListServer,它是String的数组而不是Dictionary的数组,因此您需要将其强制转换为[String]。您也可以像这样使用单if let语句来减少代码。

if let JSON = response.result.value as? [String: Any], 
   let errorList = JSON["ErrorsListServer"] as? [String] {
      for error in errorList {
          print(error)
      }
}