Как преобразовать '(Данные ?, URLResponse, Ошибка?) В ожидаемый тип аргумента' (Данные ?, URLResponse ?, Ошибка?) -> Void ' - PullRequest
0 голосов
/ 09 апреля 2020

Я не понимаю, почему я получаю ошибку с { в этой строке. let task = URLSession

let task = URLSession.shared.dataTask(with: request) { (data: Data?, response: URLResponse, error: Error?) in   //ERROR: Cannot convert value of type '(Data?, URLResponse, Error?) -> ()' to expected argument type '(Data?, URLResponse?, Error?) -> Void'

        self.removeActivityIndicator(activitiyIndicator: myActivityIndicator)

        if error != nil {
            self.displayMessage(userMessage: "Could not successfully perform this request")
            print("error=\(String(describing: error))")
            return
        }

        do {
            let json = try JSONSerialization.jsonObject(with: data!, options: .mutableContainers) as? NSDictionary

Буду признателен за любые рекомендации.

1 Ответ

2 голосов
/ 09 апреля 2020

Пожалуйста, , внимательно прочитайте , ошибка говорит о том, что второй параметр закрытия (URLResponse) должен быть необязательным (URLResponse?)

let task = URLSession.shared.dataTask(with: request) { (data: Data?, response: URLResponse?, error: Error?) in

Однако для аннотирования типов параметров не требуется

let task = URLSession.shared.dataTask(with: request) { data, response, error in

Компилятор будет жаловаться, если вы неправильно обрабатываете (необязательные) типы.

И не используете NS.. типы коллекций в Swift. Используйте нативные типы.

...