session.dataTask 调用错误中的 Swift5 额外参数“completionHandler”

Posted

技术标签:

【中文标题】session.dataTask 调用错误中的 Swift5 额外参数“completionHandler”【英文标题】:Swift5 Extra argument 'completionHandler' in call error with session.dataTask 【发布时间】:2020-08-20 07:50:06 【问题描述】:

我正在尝试制作一些天气应用程序 但是有一些问题 错误是“调用中的额外参数'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?) 
            
        
        
    

【问题讨论】:

请张贴代码...而不是图片... 【参考方案1】:

检查以下代码:

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.

【讨论】:

以上是关于session.dataTask 调用错误中的 Swift5 额外参数“completionHandler”的主要内容,如果未能解决你的问题,请参考以下文章

代码未进入数据任务的完成处理程序

s-s-rS 报告错误:处理数据集的命令文本表达式时出错

为啥初始化列表中的元素数量会导致模棱两可的调用错误?

尽管 Laravel 中的令牌正确,Ajax 调用仍返回 419 错误

Swift3 webview isUserInteractionEnabled 不起作用

在回调中分别处理 JSON 响应数据和 String 响应数据