所以我从初始化程序返回之前未在所有路径上调用错误'self.init'。尽管我对可能的结果感到困惑,因为在初始化要传递的URL的URLComponents之后,我添加了self.init(url:url)。然后使用URLRequest属性进行请求。但是为什么它仍然给我这个错误?有什么我想念的吗?知道为什么会有所帮助。谢谢。
import Foundation
extension URLRequest {
init(service: ServiceProtocol) {
guard let urlComponents = URLComponents(service: service),
let url = urlComponents.url else {
return
}
self.init(url: url)
httpMethod = service.method.rawValue
service.headers?.forEach { key, value in
addValue(value, forHTTPHeaderField: key)
}
guard case let .requestParameters(parameters) = service.task, service.parametersEncoding == .json else {
return
}
httpBody = try? JSONSerialization.data(withJSONObject: parameters)
}
}
这意味着如果从未成功创建url对象,则永远不会调用所需的初始化程序-这是禁止的。
您可以使init在守护程序的else语句中引发错误。