更新到Xcode 12:无法将类型“ DataRequest”的值转换为关闭结果类型“ Void”

时间:2020-09-18 14:48:30

标签: ios swift alamofire promisekit

我正在使用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上运行相同的代码时,代码工作正常!

1 个答案:

答案 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)
            }
        })
    }
}