【问题标题】:Module compiled with Swift 4.1.2 cannot be imported in Swift 4.1.50: Xcode 10 Error使用 Swift 4.1.2 编译的模块无法在 Swift 4.1.50 中导入:Xcode 10 错误
【发布时间】:2018-11-15 11:43:51
【问题描述】:

Swift 4.2 出来了,当我使用 ObjectMapper 和其他一些 pod 时,我在我的项目中收到了这个错误消息:

使用 Swift 4.1.2 编译的模块无法导入 Swift 4.1.50

那么我如何告诉 Xcode 开始更新我的项目并将其迁移到 Swift 4.2?

【问题讨论】:

标签: ios cocoapods carthage xcode10 swift4.1.5


【解决方案1】:

Swift 4.2 中,Implicitly Unwrapped Optional (IUO) 的实现发生了变化,根据 swift blog 现在隐含的 unwrapped optional T!将被视为 T? with 和额外的标志让编译器知道它是一个隐式的 unwrap 可选。

IUO 的新思维模型是您需要考虑的模型!成为一个 的同义词?此外,它在声明中添加了一个标志 让编译器知道声明的值可以是隐式的 展开。

由于此更改,可能存在一些源兼容性问题,可能需要您修改代码才能成功编译。

在 Swift 3 中,像 var a: Int? 这样的声明将导致具有可选类型,以及像 var b: String! 这样的声明。将导致 b 具有 ImplicitlyUnwrappedOptional 类型。它在 Swift 4.2 中发生了变化,因此它在 swift 4.2 附带的 Xcode 10 中显示 ObjectMapper 错误,并且在 Xcode 10 中为 3.* 完成了类似的实现。

在 Objectmapper 库中,有一些函数声明在 swift 4.1 之前显示警告,现在在 swift 4.2 显示为错误。请参阅下图以了解 Xcode 9.4 和 swift 4.1 中的警告

ObjectMapper GitHub 存储库上有一些拉取请求已解决该问题,但他们正在等待新的 Xcode beta 版本,因为它正在使用最近被接受的complier directive 功能将与新的 Xcode 测试版。

更新: 该问题已在 ObjectMapper 3.3.0 版本中得到修复。

【讨论】:

    【解决方案2】:

    您需要在终端中切换 Xcode beta 版本。并在您的项目中删除旧版本的 Carthage 文档。更新迦太基carthage update --platform iOS --no-use-binaries.

    【讨论】:

    • 有问题的是,库被用作(可可)豆荚。
    • 是的......尽管如此,user3488542 的 carthage 评论对我很有帮助(因为我正在使用 carthage 并遇到同样的错误 :)。
    【解决方案3】:

    您没有使用正确的 swift 版本编译 Carthage 模块。所以你需要:

    1. 确保您的终端指向您的 Xcode 10 Beta 应用程序,而不是您的常规 Xcode:

    sudo xcode-select -switch Xcode_beta_10.app

    1. 更新您的 Carthage 文件:

    carthage 更新 --platform iOS --no-use-binaries

    1. 在 Xcode 中返回您的项目,清理,构建

    【讨论】:

      【解决方案4】:

      使用终端在您的项目目录中运行以下命令。它将更新您的 pod。希望它能解决你的问题。

      pod update ObjectMapper
      

      【讨论】:

        【解决方案5】:

        我对 Alamofire 也有同样的问题。

        我的解决方法是

        1. 清理我的构建
        2. 转到File/Workspace Settings 并确保您使用Legacy Build System 代替Build System。然后问题就消失了。

        【讨论】:

        • 不适用于“import RealmSwift”.. 使用 Swift 4.1.2 编译的模块不能被 Swift 4.2 导入
        猜你喜欢
        • 1970-01-01
        • 2019-02-23
        • 2019-02-24
        • 2019-03-15
        • 2020-03-17
        • 2019-03-11
        • 2021-01-12
        • 2017-11-08
        • 2018-04-18
        相关资源
        最近更新 更多