在这种情况下,“承诺”对于类型查找是含糊的

时间:2019-05-22 00:10:39

标签: swift xcode promise

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

我试图将Promise更改为另一个不太模糊的类型。例如,我将Promise更改为Promise,并将“ let dataRet =数据作为数据”更改为“ let dataRet =数据作为字符串”,但是那也不起作用。我想指出的是,我是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”对于类型查找是不明确的。

1 个答案:

答案 0 :(得分:0)

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