Я делаю рефакторинг своего кода, чтобы все стало чище.Я делаю запрос к своему API и могу ожидать различные типы возвращаемых значений, поэтому я создал универсальную функцию, чтобы упростить мой код.
Я хотел, чтобы эта функция выдавала, поэтому я мог просто использовать do catch
для обработки ошибок или успехадело с разными типами.
Это моя функция:
func performRequest<T: Codable>(_ request: URLRequest, ofType: T.Type) throws -> T{
URLSession.shared.dataTask(with: request) {(data, response, err) in
if let err = err {throw err}
if let response = response as? HTTPURLResponse {
if response.statusCode != 200 {
// Here I would return the value
} else {
// here I would throw the error
}
}
}.resume()
}
Но в первой строке после URLSession.shared.dataTask
я получил эту ошибку:
Неверное преобразованиеот бросающей функции типа '(_, _, _) throws -> ()' к непрокидывающему типу функции (Data ?, URLResponse ?, Error?) -> Void '
IЯ понимаю, что это потому, что я пытаюсь добавить функцию dataTask, но у меня вопрос, есть ли способ сделать это?