Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/116.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios Swift 4.2编译器无法导入使用Swift 4.1.2编译的模块_Ios_Xcode_Xcode10 - Fatal编程技术网

Ios Swift 4.2编译器无法导入使用Swift 4.1.2编译的模块

Ios Swift 4.2编译器无法导入使用Swift 4.1.2编译的模块,ios,xcode,xcode10,Ios,Xcode,Xcode10,短篇故事: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 Language Version设置为 斯威夫特4 我已经在命令行上验证了shell的Swift版本 使用is 4.

短篇故事: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 Language Version设置为 斯威夫特4

  • 我已经在命令行上验证了shell的Swift版本 使用is 4.1.2:
“swift——苹果swift版本4.1.2(swiftlang-902.0.54 clang-902.0.39.2)”

  • 我已经运行了迦太基更新
  • 我已退出Xcode 10并重新启动
  • 我已深入清理并删除派生数据
  • 我生成并得到以下错误:
“Swift 4.2无法导入使用Swift 4.1.2编译的模块 编译器: …/App/Carthage/Build/iOS/RealmSwift.framework/Modules/RealmSwift.swiftmodule/arm64.swiftmodule“

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


有人对如何解决这个问题有什么建议吗?我错过什么了吗?Xcode bug?

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

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

另外,如果要在Xcode9和10之间切换,我建议您执行以下操作:如果从9更改为10,请运行
mv Carthage Carthage9
,然后重新生成Carthage。当您想切换回时,将迦太基移动到
Carthage10
并执行
mv Carthage9-Carthage
。这将为您节省大量的构建时间。

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

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

cd realm-cocoa

sh build.sh ios-swift

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

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

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


我对迦太基没有太多的经验,但我的猜测是,您应该使用Xcode 10作为命令行工具,但您必须为Xcode 10设置不同的Swift语言版本。它可能应该在项目中指定(在本例中为RealmSwift),或者使用环境变量,但恐怕您需要其他人回答更多细节。

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

并非所有框架现在都使用Swift 4.2构建。我的问题不是用Xcode 10构建它们。我能做到。我想做的是用Swift 4.1.2构建它们,并在我的Swift 4.2之前的项目中使用它们。当我这样做时,Xcode会给我一个错误,说Swift 4.2编译器无法导入它们。我该如何补救呢?引用你的问题:“但是,我想,至少,使用Xcode 10。”。对我来说,这意味着你不能构建Xcode 10。但是在这篇评论中你说你可以吗?我建议你重新表述你的问题,更好地解释你的情况。这是有道理的。我认为“不能由Swift 4.2编译器导入”的消息是一个误导。一、 最初,我尝试用Xcode 10编译,但框架是用Swift 4.2构建的,我找不到让命令行使用Swift 4的方法。我可以将我的命令行环境设置为使用Xcode 10工具集,但如何将其设置为使用Swift 4而不是Swift 4.2?@Heliotropix,它通常使用Xcode项目中的
SWIFT\u VERSION
build设置进行设置。如果我没有弄错的话,它也可以作为环境变量传递给xcodebuild。理论上,迦太基应该从这个项目中拿走它。我不知道是否有办法强迫它使用特定的Swift版本。如果只使用Xcode 10工具链编译它会发生什么?它失败了吗?它会产生什么错误?在RealmSwift项目(
master
branch)中,看起来它实际上设置为使用Swift 3:)感谢您的回复。我也可以使用“迦太基更新——不使用二进制文件”,但在Xcode 10工具集中,它使用Swift 4.2。如何指定Swift 4。这不是一个迦太基问题,而是一个shell环境问题。我刚刚更新到Xcode 10.2,一个外部库不能在新SDK上工作,我收到了与Swift 5相同的构建错误。我下载了swift工具链。现在生成错误消失了,但在设备/模拟器上运行时会导致崩溃,错误为“原因:库版本不兼容:Instamojo需要1.0.0或更高版本,但libswiftCore.dylib提供0.0.0版本”。有什么想法吗?您需要更新Instamojo版本或为您的项目构建Instamojo源代码。