2017-01-23 129 views
0

以前在我的APP swift2当我拨打电话到服务器,如果有任何错误,我做了以下内容:迁移Alamofire从SWIFT 3

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我迁移有问题,因为错误的thelist谈到零但是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

从你的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) 
     } 
}