Инициализатор для условного связывания должен иметь необязательный тип, а не «URLResponse» - PullRequest
0 голосов
/ 02 мая 2020

В настоящее время я создаю демонстрацию MVVM в swift, поэтому теперь я сталкиваюсь с проблемой при получении ответа от сервера типа «Инициализатор условного связывания должен иметь необязательный тип».

Проверьте мою ошибку enter image description here Я ищу много в Google и StacoverFlow. Ссылка: Первая Вторая ссылка

Пожалуйста, подскажите, как решить эту проблему.

    func dataTask(_ request: RequestProtocol, completion: @escaping CompletetionResult ){
    completionResult = completion
    var urlRequest = URLRequest(url: request.urlBase.appendingPathComponent(request.path), cachePolicy: .reloadIgnoringLocalAndRemoteCacheData, timeoutInterval:Service.timeout )
    urlRequest.httpMethod = request.httpMethod.rawValue
    urlRequest.httpBody = request.httpBody
    urlRequest.setValue("application/json", forHTTPHeaderField: "Content-Type")

    task = session.dataTask(with: urlRequest ) { (data, response, error) in


        if let error = error {
            self.completionResult(.failure(Errors(error.localizedDescription)))
        }

        if let response = response, response.isSuccess {
            if let data = data{
                self.completionResult(.success(data))
            }

            if response.httpsStstusCode == 204{
                self.completionResult(.success(nil))
            }
        }

        else{
            let commonErrorMessage = NSLocalizedString("Somthing went wrong!", comment: "")
            guard let data = data else {
                Logger.error(msg: commonErrorMessage)
                self.completionResult(.failure(Errors(commonErrorMessage)))
                return
            }
            do {
                let serverError = try JSONDecoder().decode(ServerError.self, from: data)
                Logger.error(msg: serverError.error ?? commonErrorMessage)
                self.completionResult(.failure(Errors(serverError.error ?? commonErrorMessage)))
            } catch {
                Logger.error(msg: commonErrorMessage, error: error)
                self.completionResult(.failure(Errors(commonErrorMessage)))
            }

        }

    }
    self.task?.resume()
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...