ios - 无法在 ios swift Promisekit 上使用 then

标签 ios swift promisekit

我创建了一个 Promise,它从 API 获取一些数据并返回它。现在我遇到的问题是在获取 json 数据后我需要将它们存储在设备存储(领域)上。当我尝试调用 promise 后,我收到一些错误,指出 Cannot conversion value of type '(Any) -> Void' to Expected argument type '(_) -> _' 。但当我尝试完成时,效果非常好。但我需要使用 then 将数据保存在领域上。

以下方法效果很好

Translator().translators().done { data -> Void in
            print(data[0].name)
            }.catch { error in
                print(error)
        }

但是以下两种方法失败了

Translator().translators().then() { data -> Void in
            print(data)
            }.catch() {
                (e: Error) in
                print(e)
        }

上面给出了一个错误,指出

Cannot convert value of type '(Any) -> Void' to expected argument type '(_) -> _'

下面的方法给出了另一个类似的错误

Translator().translators().then() {
            (data: [Translator]) -> Void in
            print(data[0].name)
            }.catch() {
                (e: Error) in
                print(e)
        }

错误信息:

Cannot convert value of type '([Translator]) -> Void' to expected argument type '([Translator]) -> _'

我创建的 promise :

func translators() -> Promise<[Translator]> {
        return firstly {
            Alamofire.request("http://192.168.0.107:3000/translatdors", method: .get).responseData()
            }.map {
                try JSONDecoder().decode([Translator].self, from: $0.data)
        }
    }

我的代码和错误的图像 enter image description here

最佳答案

当你执行.then时,你必须返回一个promise,因为在.done之前你还没有完成。我没有看到在 .done 中保存领域数据有任何问题,因为您的方法没有返回类型。

如果你仍然想使用.then,可以这样完成。

Translator().translators().then({ data -> Promise<[Translator]> in
            return Promise.value(data)
            }).done({ data in
            // Save to realm
           }).catch({ error in
              print(error.localizedDescription)
           })

关于ios - 无法在 ios swift Promisekit 上使用 then,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50000389/

相关文章:

ios - iOS 10 中的动画错误

ios - Xcode 中奇怪的 promiseKit 6 语法行为

ios - promise 套件 : compose two promises into one

ios - 在多个 WKWebView 之间共享 session

iphone - 摇一摇…iOS

ios - 使用 NSFetchedResultsController 移动行的方法及其委托(delegate)不起作用

ios - 另一个 Swift 项目中的 Swift 项目。添加子项目的导入模块

ios - 如何在 Swift 中读取 Plist?

ios - PromiseKit 6.0 迁移

ios - 子容器 View 中的 UILabel 未更新