首页 > 解决方案 > session.dataTask 调用错误中的 Swift5 额外参数“completionHandler”

问题描述

我正在尝试制作一些天气应用程序但有一些问题错误是“调用中的额外参数'completionHandler'”我应该怎么做才能解决它? 在此处输入图像描述

    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?) {
            
        }
        
    }

标签: swiftswift5completionhandlerurlsession

解决方案


检查以下代码:

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您需要传递 anURLResponse而不是URLSessiontohandle并且您不必编写参数名称,因为您将handle函数作为参数传递给dataTask.


推荐阅读