使用 Alamofire 和 PromiseKit 使用 Swift 时出现 Void 错误(请求)
Posted
技术标签:
【中文标题】使用 Alamofire 和 PromiseKit 使用 Swift 时出现 Void 错误(请求)【英文标题】:Error on Void with Alamofire and PromiseKit with Swift (Request) 【发布时间】:2019-06-21 16:19:12 【问题描述】:在我最近的项目中,我一直在使用 alamofire 和 promisekit 连接到我的 Web 服务现在我有两者的新版本,当我创建请求时出现此错误
Cannot convert value of type 'DataRequest' to closure result type 'Void'
当我尝试这样做时会发生这种情况:
func CallOne() -> Promise<[String: AnyObject]>
return Promise
fullfil,reject -> Void in
return Alamofire.request(
url_api,
method: .get).responseJSON
response in
switch(response.result)
case .success(let res):
let data = res as? [String: AnyObject]
fullfil(data!)
case .failure(let error):
reject(error)
当我尝试使用它时:
func CallTwo(email: String, phone: String) -> Promise<[String: AnyObject]>
let params =
["email": email, "phone": phone]
return Promise
fullfil,reject -> Void in
return Alamofire.upload(
multipartFormData: MultipartFormData in
for (key, value) in params
MultipartFormData.append(value.data(using: String.Encoding.utf8)!, withName: key)
, to: url_api, method: .post) (result) in
switch (result)
case .success(let upload, _, _):
upload.responseJSON response in
switch(response.result)
case .success(let res):
let data = res as? [String: AnyObject]
fullfil(data!)
case .failure(let error):
reject(error)
case .failure(let encodingError):
print(encodingError)
我收到此错误Unable to infer closure type in the current context
我该如何解决?提前致谢
【问题讨论】:
【参考方案1】:我用
解决了这个问题密封
func CallOne() -> Promise<[String: AnyObject]>
return Promise
seal in
return Alamofire.request(
url_api,
method: .get).responseJSON
response in
switch(response.result)
case .success(let res):
let data = res as? [String: AnyObject]
seal.fulfill(data!)
case .failure(let error):
seal.reject(error)
func CallTwo(email: String, phone: String) -> Promise<[String: AnyObject]>
let params =
["email": email, "phone": phone]
return Promise
seal in
return Alamofire.upload(
multipartFormData: MultipartFormData in
for (key, value) in params
MultipartFormData.append(value.data(using: String.Encoding.utf8)!, withName: key)
, to: url_api, method: .post) (result) in
switch (result)
case .success(let upload, _, _):
upload.responseJSON response in
switch(response.result)
case .success(let res):
let data = res as? [String: AnyObject]
seal.fulfill(data!)
case .failure(let error):
seal.reject(error)
case .failure(let encodingError):
print(encodingError)
【讨论】:
以上是关于使用 Alamofire 和 PromiseKit 使用 Swift 时出现 Void 错误(请求)的主要内容,如果未能解决你的问题,请参考以下文章
使用 Alamofire 和 PromiseKit 使用 Swift 时出现 Void 错误(请求)
使用 Swift 和 PromiseKit 链接 Alamofire 请求
创建基础服务的问题 <Alamofire,PromiseKit,Generic>