更新到 Xcode 12:无法将类型“DataRequest”的值转换为闭包结果类型“Void”
Posted
技术标签:
【中文标题】更新到 Xcode 12:无法将类型“DataRequest”的值转换为闭包结果类型“Void”【英文标题】:Update to Xcode 12: Cannot convert value of type 'DataRequest' to closure result type 'Void' 【发布时间】:2020-09-18 14:48:30 【问题描述】:我正在使用 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 上运行相同的代码时,代码运行良好!
【问题讨论】:
尝试更新您的 pod。 【参考方案1】:我在 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)
)
【讨论】:
以上是关于更新到 Xcode 12:无法将类型“DataRequest”的值转换为闭包结果类型“Void”的主要内容,如果未能解决你的问题,请参考以下文章
Xcode 12 中的类型检查错误:“编译器无法在合理的时间内对该表达式进行类型检查”
更新到 xcode 7 后出错:无法使用类型参数列表调用类型“NSRegularExpression”的初始化程序
Playground 导入 - 更新到 Xcode 12 后没有这样的模块
Ionic 项目无法在 Xcode12 上构建,代码 65 退出
将 xcode 更新到 9.4 后,react native ios build 失败。错误是“NSInteger”类型的值