ios Promise 6 - 无法将类型 '(_) -> Environment' 的值转换为预期的参数类型 '(_) -> _'

标签 ios swift promisekit

我正在从 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
    }
}

最佳答案

正如 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 的发行说明多次描述了您的确切问题。

将您的依赖项固定到主要版本,所有包管理器都支持此操作,并且所有包管理器的文档都会告诉您将依赖项固定到主要版本。

关于ios Promise 6 - 无法将类型 '(_) -> Environment' 的值转换为预期的参数类型 '(_) -> _',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50395458/

相关文章:

swift - 启动 IOS 应用程序时出现 PromiseKit 6.0 错误

swift - PromiseKit 捕获多个参数

objective-c - 如何在不阻塞 UI 的情况下高效地从 Web 服务器请求数据?

macos - 如何在 Swift 中使用 NSWindowOcclusionState.Visible

ios - Google Maps API 不显示我的位置

ios - 如何生成所有可能的组合?

ios - AFNetworking 用户登录异步问题

swift - 将递归异步函数转换为 promise

ios - NSManagedObjectContext 的 performBlock 中的 dispatch_async

ios - 如何在使用 Storyboards 关闭模态视图 Controller 之前推送 viewController?