无法将 Promise (_,_) -> DataRequest 类型的返回表达式转换为返回类型 Promise<DataResponse,AnyObject>>
Posted
技术标签:
【中文标题】无法将 Promise (_,_) -> DataRequest 类型的返回表达式转换为返回类型 Promise<DataResponse,AnyObject>>【英文标题】:Cannot convert return expression of type Promise (_,_) -> DataRequest to return type Promise<DataResponse,AnyObject>> 【发布时间】:2017-06-19 21:24:24 【问题描述】:无法将 Promise (,) 类型的返回表达式 -> DataRequest 转换为返回类型 Promise>
我的功能是
func postJson(_ url: String, parameters: [String: String]) -> Promise<DataResponse<AnyObject>>
var request = URLRequest(url: URL(string: url)!)
request.httpMethod = "POST"
request.setValue("application/json", forHTTPHeaderField: "Content-Type")
request.httpBody = try! JSONSerialization.data(withJSONObject: parameters)
return Promise fulfill, reject in
manager.request(request)
.responseJSON response in
fulfill(response)
我在 return Promise 行收到此错误。如何转换?
我尝试将我的返回签名更改为 Promise<DataRequest, Error
并在该行上得到一个编译错误,即 Promise 过于专业化了 2 个参数而不是 1 个。
【问题讨论】:
【参考方案1】:问题在于fulfill
,因为它需要参数DataResponse<AnyObject>
,但您传递的是DataResponse<Any>
。
将postJson
方法的返回类型更改为Promise<DataResponse<Any>>
应该可以解决您的问题。
改变这一行
func postJson(_ url: String, parameters: [String: String]) -> Promise<DataResponse<AnyObject>>
到
func postJson(_ url: String, parameters: [String: String]) -> Promise<DataResponse<Any>>
【讨论】:
以上是关于无法将 Promise (_,_) -> DataRequest 类型的返回表达式转换为返回类型 Promise<DataResponse,AnyObject>>的主要内容,如果未能解决你的问题,请参考以下文章
getItem 为啥返回 'Promise "_U": 0, "_V": 0, "_W": null, "_X": n
为啥 getItem 在我的代码中使用 asyncStorage 返回 'Promise "_U": 0, "_V": 0, "_W":