【发布时间】:2019-07-21 16:59:57
【问题描述】:
围绕我的问题有很多答案,但我为他们尝试的解决方案并没有完全解决问题。我不确定它是否与拥有多个泛型或其他东西有关(对于 Swift 来说也是较新的,所以我仍然在思考语法)。
我注意到我的 API 请求代码中有很多共同点,因此我决定将主要工作抽象出来,让它与任何可编码的请求/响应对象一起工作。这是我的主要请求方法:
private func sendRequest<T: Encodable, U: Decodable>(url: URL, requestModel: T) -> Promise<U>
我试图这样称呼它:
public func signIn(requestModel: SignInRequest) -> Promise<SignInResponse> {
let url = URL(string: authURL + "/signin")!
//getting compile error "Cannot explicitly specialize generic function" on this line
return sendRequest<SignInRequest, SignInResponse>(url: url, requestModel: requestModel)
}
我试过直接赋值给返回对象:
let x : Promise<SignInResponse> = sendRequest(...)
return x
帮助编译器(如其他解决方案中所建议的那样)但仍然是同样的问题。有什么见解吗?
【问题讨论】:
-
即使在将
sendRequest的结果分配给显式类型的变量后编译仍然失败,这有点令人惊讶。你能提供更多关于Promise、SignInRequest和SignInResponse的信息吗?
标签: swift