【问题标题】:Module compiled with Swift 4.0 cannot be imported in Swift 3.2.1使用 Swift 4.0 编译的模块无法在 Swift 3.2.1 中导入
【发布时间】:2017-10-10 06:32:10
【问题描述】:

Swift 4.0 模块在带有 Xcode 9.0 的 Swift 3.2 应用程序中运行良好。

但是现在,使用 Xcode 9.1,我得到:

使用 Swift 4.0 编译的模块无法导入 Swift 3.2.1

或者:

使用 Swift 4.0 编译的模块无法导入 Swift 4.0.1

【问题讨论】:

  • 我也有这个错误信息,结果是我的代码中出现了各种语法错误。一旦我修复了语法错误,错误就消失了。

标签: swift4 swift3.2 xcode9.1-beta


【解决方案1】:

Swift 4.0 仅与 Swift 3.2 兼容。
Swift 4.0.1 仅与 Swift 3.2.1 兼容。

所以:

  • 不能混合使用 4.0 和 3.2.1
  • 不能混合使用 4.0.1 和 3.2
  • 不能混合使用 4.0 和 4.0.1
  • 不能混合使用 3.2.1 和 3.2

换种说法:

  • 您可以将支持 Xcode 9.0 的 Swift 版本混合在一起
  • 您可以将支持 Xcode 9.1 的 Swift 版本混合在一起
  • 您不能混合使用 Xcode 9.0 和 Xcode 9.1 Swift 版本

如果模块是由您构建的,只需使用相同的 Xcode 重新构建即可。
如果模块是由第三方构建的,请请求 Xcode 9.1 兼容的构建。

【讨论】:

    【解决方案2】:

    通过安装 Xcode 9.0 toolchain 并使用它来构建您的项目,可以在 Xcode 9.1 beta 2 中使用 Swift 3.2 构建。

    然后在 Xcode -> Toolchains 菜单下选择 Swift 4.0 版本。

    您现在应该能够在 Xcode 9.1 b2 中使用 Swift 3.2 或 4.0 进行构建。

    【讨论】:

    • 哦,正确...但是在稳定的 Xcode 9.1 时,iTunes Connect 不会接受自定义工具链进行发布。
    • 确实如此。我想你可以在 Xcode 9.1 beta 测试时继续使用 Xcode 9.0 提交。不过,有些 iPhone X 功能在当前的 Xcode 中不起作用,这有点烦人。
    【解决方案3】:

    使用最新的 Xcode 版本解决了这个问题

    【讨论】:

      猜你喜欢
      • 2018-03-25
      • 2017-11-08
      • 2018-04-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-03-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多