Swift5额外参数'completionHandler'在session.dataTask的调用错误中

问题描述

我正在尝试制作一个天气应用 但是有一些问题 错误是“调用中的额外参数'completionHandler'” 我应该怎么解决呢? enter image description here

    import Foundation
    
    struct WeatherManager {
        let weatherURL = "http://api.openweathermap.org/data/2.5/weather?APPID=sdfkjskfjsfjskflskflsjklfjf&units=metric"
        
        func fetchWeather(cityName: String) {
           let urlStirng = "\(weatherURL)&q=\(cityName)"
            performRequest(urlString: urlStirng)
        }
        
        func performRequest(urlString: String) {
            //1. Create a URL
            if let url = URL(string: urlString) {
                
                //2. Create a URL Session
                let session = URLSession(configuration: .default)
                
                //3. Give the session a task
                let task = session.dataTask(with: url,completionHandler: handle(data:response:error:))
                
                //4. Start the task
                task.resume()
                
            }
        }
        
        func handle(data: Data?,response: URLSession?,error: Error?) {
            
        }
        
    }

解决方法

检查以下代码:

func performRequest(urlString: String) {

    //1. Create a URL
    if let url = URL(string: urlString) {
        
        //2. Create a URL Session
        let session = URLSession(configuration: .default)
        
        //3. Give the session a task
        let task = session.dataTask(with: url,completionHandler: handle)
        
        //4. Start the task
        task.resume()
    }
}

func handle(data: Data?,response: URLResponse?,error: Error?) {

}

对于response,您需要将URLResponse而不是URLSession传递给handle,并且您不必写参数名,因为您要传递的是handle用作dataTask的参数。

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...