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

Sim*_*mon 83 xcode ios swift swift4 xcode9

但是我使用相同的Xcode重新编译了框架,它仍然给我这个错误.

  • 适用于两者的基础SDK iOS 11.1
  • 两个版本的Swift语言版Swift 4.0
  • 不使用Pods/Carthage

我希望有人知道

Zig*_*Zig 133

更新:

对于Xcode的发布版本:

当使用Xcode 9.1,9.2,9.3,9.4,10等打开使用早期Xcode工具构建的框架的项目时,将发生此错误(以及涉及Swift 4.1,4.2等的类似错误).

要解决此问题,请使用Carthage(carthage update --platform iOS),Cocoapods(pod updatepod install)更新和重建框架,或使用新更新的Xcode工具手动更新和重建框架.更新Xcode时应自动更新这些工具,但如果没有,您可以按照原始答案中列出的步骤进行操作.

您可能还需要清理项目cmd + shift + k以及可能的构建文件夹,cmd + option + shift + k以使Xcode不使用缓存的框架构建.

在某些情况下,您可能还需要删除派生数据文件夹(通过转到Xcode首选项 - >位置 - >派生数据文件夹(感谢Stunner)轻松找到

对于Xcode的beta版本:

请参阅以下原始答案,然后按照上述步骤操作

原答案:

您可能仍然将xcodebuild工具设置为使用Swift 4.0构建的Xcode 9.0,并且与Xcode 9.1 beta的Swift 4.0.1不兼容.

使用以下命令检入终端:

xcodebuild -version
Run Code Online (Sandbox Code Playgroud)

或者只是进入Xcode首选项 - >位置并检查/更改命令行工具到Xcode 9.1.你应该设置.

  • 嗨@Zig.我在github(mattdonnelly/swifter)上使用的repo是在Swift 4.0上,但显然是使用XCode 9.0编译的,所以我遇到了这个问题.对于XCode 9.1及更高版本,在Github上重新编译别人的cocoapod所需的步骤是什么? (3认同)
  • 这也适用于Xcode 10的beta。 (2认同)

Stu*_*ner 25

我的问题是由于没有为Swift 4.0.2编译外部框架.我通过Carthage添加了这个文件,所以运行:

carthage update --platform iOS
Run Code Online (Sandbox Code Playgroud)

然后清理项目cmd + shift + k和构建文件夹cmd + option + shift + k并删除派生数据文件夹(只是将其移动到垃圾箱工作)为我工作.

  • 实际上,这基本上就是解决方案.由于Apple最新的快速更新,今天(4月18日)也发生了同样的事情!:) (2认同)

Emr*_*ses 11

就我而言,我下载了xCode 11 Beta版本来测试SwiftUI。运行项目时,出现“无法通过Swift 5.0.1编译器导入使用Swift 5.1编译的模块:...”错误。

要解决此问题。我将xCode命令行工具更改为新的xCode 11注释行工具。之后,您可以使用SwiftUI创建新的xcode项目。

Xcode->首选项->位置-> XCode命令行工具

Xcode推荐线工具

我希望这会帮助想要测试新框架的人:)


小智 9

此处安装适用于您的特定Xcode版本的Xcode工具链。

Xcode工具链包括编译器,lldb以及其他相关工具的副本,这些副本为在特定版本的Swift中工作提供了凝聚的开发经验。

打开Xcode的首选项,导航到Components> Toolchains,然后选择已安装的Swift工具链。

现在,您可以编译并运行该应用程序。


pka*_*amb 6

我在Xcode 10 beta中遇到了这个问题,它添加了Swift 4.2。我的问题与迦太基或任何外部依赖无关。

转到YourTarget > Build Settings > Swift Language Version所有Xcode目标。

我的都准备了Swift 4

添加“复制文件”构建阶段后,我开始出现错误

:0:错误:Swift 4.2编译器无法导入使用Swift 4.1.2编译的模块:/Users/user/Library/Developer/Xcode/DerivedData/MyApp-faskfrihumfcdibjxisjvbfshppp/Build/Intermediates.noindex/MyApp.build/Debug/ MyAppExtension.build/Objects-normal/x86_64/MyClass~partial.swiftmodule

命令MergeSwiftModule失败,退出代码非零

然后,我将每个目标的都设置Swift Language VersionSwift 4.2,从而消除了错误。

我不确定为什么首先会发生错误,因为将所有目标设置为Swift 4应该同样有效。