alamofire не делает правильную связь с API - PullRequest
1 голос
/ 09 мая 2019

я пытаюсь получить ответ, содержащий json, из openweathermap api, но из отладчика кажется, что когда он попадает в блок кода alamofire, он просто пропускает его

вот блок кода, который я использую для этой задачи

func printJson(){

    Alamofire.request("https://api.openweathermap.org/data/2.5/find?appid=6ad1f143546b8c6d761ecbda6a34a005&q=yavne", method: .get).responseJSON { response in
        if response.data != nil {
            var json : JSON
            do{
                json = try JSON(data: response.data!)
                print(json)
        }catch{}
        }

    }

}

1 Ответ

0 голосов
/ 09 мая 2019

Используйте этот вспомогательный класс для выполнения вызовов API.

class NetworkHandler {

    static let shared = NetworkHandler()

    func sendRequest(withUrl url:String,andBody body:[String:Any]? = [:],
                         completionHandler: @escaping ((_ status: Bool,_ response:Any) -> Void)) {
        DispatchQueue.global(qos: .userInitiated).async {

            Alamofire.request(url, method: .post, parameters: body,encoding: JSONEncoding.default, headers: nil).responseJSON {
                response in

                guard response.response?.statusCode == 200 else{
                    completionHandler(false,"Service Temporarily Unavailable.\nPlease check your internet connection or  contact your Service provider.")
                    return
                }
                switch response.result {
                case .success:
                    completionHandler(true,response.value!)
                    break
                case .failure(let error):
                    completionHandler(false,error.localizedDescription)
                }
            }
        }
    }
}
...