Currently, I am create a demo of MVVM in swift so now i am facing issue on get response from server like "Initializer for conditional binding must have Optional type".
Check my error
I am searching many more in google and stacoverflow. Reference link : First Second Link
Can please guide me how to fix this issue.
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()
}