更新到 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)
            }
        })
    }
}