#swift #swift5 #completionhandler #urlsession
#swift #swift5 #completionhandler #urlsession
Вопрос:
Я пытаюсь создать какое-то погодное приложение, но есть некоторая проблема, ошибка «Дополнительный аргумент ‘completionHandler’ в вызове», что я должен сделать для ее решения?? введите описание изображения здесь
import Foundation
struct WeatherManager {
let weatherURL = "http://api.openweathermap.org/data/2.5/weather?APPID=sdfkjskfjsfjskflskflsjklfjfamp;units=metric"
func fetchWeather(cityName: String) {
let urlStirng = "(weatherURL)amp;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. пожалуйста, отправьте код … вместо изображения …
Ответ №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
.