以前在我的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]]
答案 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)
}
}