В настоящее время я создаю демонстрацию MVVM в swift, поэтому теперь я сталкиваюсь с проблемой при получении ответа от сервера типа «Инициализатор условного связывания должен иметь необязательный тип».
Проверьте мою ошибку Я ищу много в 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()
}