无法在ios swift promisekit上使用

时间:2018-04-24 11:19:51

标签: ios swift promisekit

我创建了一个从API获取一些数据并返回它的promise。现在我被困住的是获取json数据后我需要将它们存储在设备存储(领域)上。在我尝试使用后调用诺言然后我得到一些错误声明无法转换类型的值#(39)(任何) - >虚空'预期参数类型'(_) - > _' 。但是,当我尝试完成它完美的工作。但我需要使用然后将数据保存在领域。

以下approch工作正常

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]) -> _'

我创造的承诺:

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

1 个答案:

答案 0 :(得分:0)

执行promise时,您必须返回.then,因为直到.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)
           })