目前,我正在快速创建 MVVM 的演示,所以现在我面临从服务器获取响应的问题,例如“条件绑定的初始化程序必须具有可选类型”。
检查我的错误
我正在谷歌和 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()
}