2017-02-08 10 views
-3

У меня проблема с SwiftyJson, я пытаюсь проверить, есть ли какая-то ценность в моем Json, которая содержит «Access denied» и печатает ее, но это не проверка, что не так с моим кодом?swiftyJson error handle

Json ответ я получаю:

{ ошибка = { код = "-32002"; message = "Access denied"; }; id = 1; jsonrpc = "2.0"; }

Метод запроса:

private func makeWebServiceCall (urlAddress: String, requestMethod: HTTPMethod, params:[String:Any], completion: @escaping (_ JSON : Any) ->()) { 

    manager.session.configuration.timeoutIntervalForRequest = 1 


    manager.request(urlAddress, method: requestMethod, parameters: params, encoding: JSONEncoding.default).responseJSON{ response in 

     print(response.timeline) 

     switch response.result { 
     case .success(let value): 

      let json = JSON(value) 

      if (json["error"].arrayValue.contains("Access denied")) { 
       print("Access denied") 
      } 

      if let jsonData = response.result.value { 


       completion(jsonData) 
      } 


     case .failure(let error): 

       completion("Failure Response: \(error)") 



} 
+0

'JSON [ "ошибка"]' содержит словарь '{}'. Массив представлен '[]' – vadian

ответ

2

json["error"] является Dictionary не Array, и вы должны получить доступ к значению message из этого словаря.

if let message = json["error"]["message"].string, message == "Access denied" { 
    print("Access denied") 
} 
+0

Спасибо, это то, что мне нужно! –

+0

@EgleMatutyte Добро пожаловать! –

1

Попробуйте, как это,

if let message = json["error"]["message"].rawString(), message == "Access denied" { 

    print(message) 
}