更新到 Xcode 12:无法将类型 'DataRequest' 的值转换为闭包结果类型 'Void'
Update to Xcode 12: Cannot convert value of type 'DataRequest' to closure result type 'Void'
我正在使用 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!
上使用相同的代码时,代码工作正常
我在 Github 上找到了答案。
https://github.com/mxcl/PromiseKit/issues/1165
我不应该尝试 return 从闭包传递到 Promise.init 的任何东西。
奇怪的是,在 Xcode.
的早期版本中,它是如何工作的
为了解决这个问题,我必须将 Alamofire.request 前面的 return 替换为 _ =
函数现在看起来像这样:
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)
}
})
}
}
我正在使用 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!
上使用相同的代码时,代码工作正常我在 Github 上找到了答案。
https://github.com/mxcl/PromiseKit/issues/1165
我不应该尝试 return 从闭包传递到 Promise.init 的任何东西。 奇怪的是,在 Xcode.
的早期版本中,它是如何工作的为了解决这个问题,我必须将 Alamofire.request 前面的 return 替换为 _ =
函数现在看起来像这样:
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)
}
})
}
}