首页 > 解决方案 > 在这种情况下,“Promise”对于类型查找是模棱两可的

问题描述

我正在尝试设置我的 Swift 应用程序以使用 Promises 框架(https://github.com/google/promises/blob/master/g3doc/index.md#creating-promises)。但是我无法解决这个编译时错误:在这种情况下,“Promise”对于类型查找来说是不明确的。

我试图将 Promise 更改为另一种不那么模棱两可的类型。例如,我将 Promise 更改为 Promise,并将“let dataRet = data as Data”更改为“let dataRet = data as String”,但这也不起作用。我想指出,我是 Swift 编程的新手,希望能得到任何帮助。

我正在关注本教程:https ://medium.com/@Cordavi/exploring-promises-in-swift-456c26f7c7c8

    //do async work
    getDataFromAPI()
        .then { (_) in }
        .catch { (error) in
            print(error.localizedDescription)
        }


    func getDataFromAPI() -> Promise<Data> {
        return Promise { fulfill, reject in
            //Run the query to get items
            self.appSyncClient?.fetch(query: getItemsQuery())  { (result, error) in
                //test for error
                if let error = error {
                    reject(error)
                }
                //test data is not nil
                guard let data = result.data else {
                    let error = NSError(domain: "", code: 100, userInfo: nil)
                    reject(error)
                }
                //we have the data
                let dataRet = data as Data
                fulfill(dataRet)

            }
        }
    }

预期结果:getDataFromAPI 从 API 返回数据并继续执行 .then { (_) in }。

实际结果:编译器错误:在此上下文中,“Promise”对于类型查找不明确。

标签: swiftxcodepromise

解决方案


我通过将返回类型更改为 Promises.Promise 解决了这个问题。


推荐阅读