我正在使用AlamoFire和PromiseKit进行API调用。
在我更新到Xcode 12.0之前,该代码可以正常工作2年。
函数现在返回错误:“无法将'DataRequest'类型的值转换为关闭结果类型'Void'”
我的功能如下:
func fetchArticlesFromApi (API: String) -> Promise<[Article]> {
return Promise<[Article]> { seal in
return Alamofire.request(API).validate().responseString(completionHandler: { //Error happening here
response in
switch (response.result) {
case .success(let responseString1):
//Do something
case .failure(let error):
print (error)
seal.reject(error)
}
})
}
}
函数第三行发生错误 有什么想法可能会在此更新中发生什么变化?
注意:当我在xcode 11.6上运行相同的代码时,代码工作正常!
答案 0 :(得分:3)
我在Github上找到了答案。
https://github.com/mxcl/PromiseKit/issues/1165
我不应该试图从传递给Promise.init的闭包中返回任何东西。 奇怪在以前版本的Xcode中是如何工作的。
要解决此问题,我必须用_ =
替换Alamofire.request ...前面的返回值该函数现在如下所示:
func fetchArticlesFromApi (API: String) -> Promise<[Article]> {
return Promise<[Article]> { seal in
_ = AF.request(API).validate().responseString(completionHandler: {
response in
switch (response.result) {
case .success(let responseString1):
//Do something
case .failure(let error):
print (error)
seal.reject(error)
}
})
}
}