Alamofire 4要求打开天气

时间:2018-03-25 22:43:43

标签: swift request alamofire

处理我的第一个Alamofire请求和更新为Alamofire 4的代码。无法正确更新此Alamofire.request .responseJSON。我正在考虑迁移documentation:但不够聪明。有什么建议吗?

    let APIKey = "myAPIkey"

func retrieveCurrentWeatherAtLat(lat: CLLocationDegrees, lon: CLLocationDegrees,
                                 block: (_ weatherCondition: WeatherCondition) -> Void) {
    let url = "http://api.openweathermap.org/data/2.5/weather?APPID=\(APIKey)"
    let params = ["lat": lat, "lon": lon]

    //  Send the request
    Alamofire.request(url, method: .get, parameters: params)
        .responseJSON { request, response, result in
            switch result {
            case .Success(let json):
                let json = JSON(json)
                block(weatherCondition: self.createWeatherConditionFronJson(json))
            case .Failure(_, let error):
                print("Error: \(error)")
            }
    }
}

2 个答案:

答案 0 :(得分:0)

也许可以帮到你

    Alamofire.request(url, method: .get, parameters: params, encoding: JSONEncoding.default).responseJSON { (response) in

        switch response.result {
       case .Success(let json):
            let json = JSON(json)
            block(weatherCondition: self.createWeatherConditionFronJson(json))
        case .Failure(_, let error):
            print("Error: \(error)")
        }
    }

答案 1 :(得分:0)

let APIKey = "YourApiKeyComesHere"

//  Sending the request to Open Weather
func retrieveCurrentWeatherAtLat(lat: CLLocationDegrees, lon: CLLocationDegrees,
                                 block: @escaping (_ weatherCondition: WeatherCondition) -> Void) {
    let url = "https://api.openweathermap.org/data/2.5/weather?APPID=\(APIKey)"
    let params = ["lat": lat, "lon": lon]
    print("Sending request... \(url)")
    let request = Alamofire.request(url, method: .get, parameters: params, encoding: URLEncoding(destination: .queryString)).responseJSON { (response) in
        print("Got response from server: \(response)")
        switch response.result {
        case .success(let json):
            let json = JSON(json)
            block(self.createWeatherConditionFronJson(json: json))
            print("Success: \(json)") //test
        case .failure(let error):
            print("Error: \(error)")
        }
    }
    request.resume()
}