繁体   English   中英

使用Swift 4.1.2编译的模块不能由Swift 4.2编译器导入

[英]Module compiled with Swift 4.1.2 cannot be imported by the Swift 4.2 compiler

短篇小说:Xcode 10设置为Swift 4,但它使用的是Swift 4.2。

长话:我们的项目还没有为Swift 4.2做好准备,因为我们的依赖框架还不是Swift 4.2。 但是,我想至少使用Xcode 10。

  • 我安装了Xcode 9.4.1和Xcode 10。
  • 我将命令行工具设置为使用Xcode 9.4.1:

在此输入图像描述

  • 在Xcode 10中,我将项目设置Swift语言版设置为Swift 4。

在此输入图像描述

  • 我在命令行上验证了shell使用的Swift版本是4.1.2:

“swift --version Apple Swift版本4.1.2(swiftlang-902.0.54 clang-902.0.39.2)”

  • 我已经运行了carthage更新。
  • 我已经退出Xcode 10并重新启动。
  • 我已深度清理并删除了衍生数据。
  • 我构建,我收到此错误:

“使用Swift 4.1.2编译的模块无法通过Swift 4.2编译器导入:... / App / Carthage / Build / iOS / RealmSwift.framework / Modules / RealmSwift.swiftmodule / arm64.swiftmodule”

对我来说,这表明我已正确设置了我的Swift版本(4.1.2)并且Xcode仍在尝试使用错误版本的Swift(4.2)。

有没有人有关于如何解决这个问题的建议? 我错过了什么吗? Xcode错误?

我不是肯定的,但我猜是这就是原因:

我将命令行工具设置为使用Xcode 9.4.1

您必须使用Xcode 10重新编译Swift 4依赖项,因为Swift 不是ABI稳定的 ,即使用不同编译器版本编译的二进制文件不兼容。 甚至使用不同版本的Xcode编译的Swift 4.0二进制文件也可能不兼容。

我对Carthage没有多少经验,但我的猜测是你应该使用Xcode 10作为命令行工具,但你必须设置一个不同的Swift语言版本供Xcode 10使用。它应该在项目(在这种情况下是RealmSwift),或者使用环境变量,但我担心你需要别人回答更多细节。

将Realm与Xcode 10一起使用需要从源代码构建它。 在终端写:

git clone --recursive https://github.com/realm/realm-cocoa.git

cd realm-cocoa

sh build.sh ios-swift

你可以使用多个swift工具链 安装一些版本后,下载url swift工具链下载 重启你的xcode,在xocde菜单中你可以看到toolchains选项。

我有同样的问题然后我意识到我没有选择Xcode 10作为我的Xcode 尝试:

sudo xcode-select -s /Applications/Xcode10.app

此外,如果您要在Xcode9和10之间切换,我建议您使用以下内容:如果您从9更改为10,请运行mv Carthage Carthage9然后重建迦太基。 每当你想要转回时,将迦太基移动到Carthage10并做mv Carthage9 Carthage 这将为您节省大量时间。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM