2017-01-23 124 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) 
     } 
}