【问题标题】:ios Promise 6 - Cannot convert value of type '(_) -> Environment' to expected argument type '(_) -> _'ios Promise 6 - 无法将类型 '(_) -> Environment' 的值转换为预期的参数类型 '(_) -> _'
【发布时间】:2018-05-17 15:38:12
【问题描述】:

我正在从 PromiseKit 4.3 -> 6 迁移并陷入这个错误。任何帮助,将不胜感激。谢谢

错误 - “无法将类型 '() -> Environment' 的值转换为预期的参数类型 '() -> _'”

open func run() -> Promise<Environment> {
    return GetSettingsQuery().run().then { result -> Environment in
        var environment = Environment.certification

        if let dict = result.data as? Dictionary<String, AnyObject>,
            let environementRaw = dict[“ABC”] as? Int,
            let env = Environment(rawValue: environementRaw) {
            environment = env
        }
        return environment
    }
}

【问题讨论】:

    标签: ios swift promisekit


    【解决方案1】:

    正如 PromiseKit 文档中的迁移指南和故障排除指南所说,您需要将 then 替换为 map

    open func run() -> Promise<Environment> {
        return GetSettingsQuery().run().map { result -> Environment in
            var environment = Environment.certification
    
            if let dict = result.data as? Dictionary<String, AnyObject>,
                let environementRaw = dict[“ABC”] as? Int,
                let env = Environment(rawValue: environementRaw) {
                environment = env
            }
            return environment
        }
    }
    

    通常建议阅读项目的文档,尤其是在升级项目的主要版本时。

    在没有先阅读发行说明的情况下,切勿升级库的主要版本,PromiseKit v6 的发行说明会多次描述您的确切问题。

    将您的依赖项固定到主要版本,所有包管理器都支持这一点,所有包管理器的文档都告诉您固定您的依赖项主要版本。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-07-27
      • 2016-07-02
      • 2016-03-21
      • 1970-01-01
      • 2020-03-01
      • 2016-08-01
      • 2017-02-07
      • 1970-01-01
      相关资源
      最近更新 更多