但是我使用相同的Xcode重新编译了框架,它仍然给我这个错误。
我希望有人知道
答案 0 :(得分:110)
更新:
对于Xcode的发布版本:
使用Xcode 9.1,9.2,9.3,9.4,10等打开使用早期Xcode工具构建的框架的项目时,会出现此错误(以及涉及Swift 4.1,4.2等的类似错误)。 / p>
要解决此问题,请使用Carthage(carthage update --platform iOS
),Cocoapods(pod update
或pod install
)或使用新更新的Xcode工具手动更新和重建框架。更新Xcode时应自动更新这些工具,但如果没有,您可以按照原始答案中列出的步骤进行更新。
您可能还需要清理项目cmd + shift + k
以及可能的构建文件夹cmd + option + shift + k
,以使Xcode不使用缓存的框架构建。
在某些情况下,您可能还需要删除派生数据文件夹(通过转到Xcode首选项 - >位置 - >派生数据文件夹轻松找到) (Thanks Stunner)
对于Xcode的测试版:
请参阅下面的原始答案,然后按照上述步骤操作。
原始答案:
您可能仍然将xcodebuild工具设置为使用Swift 4.0构建的Xcode 9.0,并且与Xcode 9.1 beta的Swift 4.0.1不兼容。
使用以下命令检查终端:
xcodebuild -version
或者只是进入Xcode首选项 - >位置并检查/更改命令行工具到Xcode 9.1。你应该设置好。
答案 1 :(得分:20)
我的问题是由于没有为Swift 4.0.2编译外部框架。我已经通过Carthage添加了此文件,因此正在运行:
carthage update --platform iOS
然后清理项目cmd + shift + k
并构建文件夹cmd + option + shift + k
并删除派生数据文件夹(仅将其移至垃圾箱)也适用于我。
答案 2 :(得分:8)
从here安装适用于您的特定Xcode版本的Xcode工具链。
Xcode工具链包括编译器,lldb和其他相关工具的副本,这些工具为在特定版本的Swift中工作提供了一致的开发体验。
打开Xcode的首选项,导航到组件>工具链,并选择已安装的Swift工具链。
这将允许您现在编译并运行该应用程序。
答案 3 :(得分:7)
我用Xcode 10 beta解决了这个问题,它添加了Swift 4.2。我的问题与迦太基或任何外部依赖无关。
转到YourTarget > Build Settings > Swift Language Version
获取所有Xcode目标。
我的全部都设为Swift 4
。
添加“复制文件”构建阶段后,我开始收到错误消息
:0:错误:使用Swift 4.1.2编译的模块无法由Swift 4.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 Version
设置为Swift 4.2
,从而消除了错误。
我不确定为什么首先会发生错误,因为将所有目标都设置为Swift 4
应该同样有效。
答案 4 :(得分:4)
就我而言,我下载了xCode 11 Beta版来测试SwiftUI。运行项目时,出现“ Swift 5.0.1编译器无法导入使用Swift 5.1编译的模块:...” 错误。
要解决此问题。我将xCode命令行工具更改为新的xCode 11注释行工具。之后,您可以使用SwiftUI创建新的xcode项目。
Xcode->首选项->位置-> XCode命令行工具
我希望,这对希望使用新框架进行测试的人有所帮助:)
答案 5 :(得分:3)
就我而言(Xcode 9.2):
我去了Xcode Preferences > Locations > Derived Data
然后我删除了数据并做了一个干净的构建并且没问题。
答案 6 :(得分:1)
就我而言,我使用带有插件cocoapods-binary
的CocoaPods将库预构建为二进制文件。将Xcode从10升级到11后,Xcode给我这个错误:
Module compiled with Swift 5.0.1 cannot be imported by the Swift 5.1 compiler
我通过删除/Pods
目录并运行pod install
来解决此问题。
答案 7 :(得分:0)
就我而言,我用它抱怨的任何版本重新编译了框架。
要重新编译,请运行pod update
或更新carthage(您使用的是哪个),然后构建项目。
然后在finder中搜索框架。将theFramework.framework
复制粘贴到您的项目中,并确保“如果需要复制项目。”再次构建项目,它应该可以工作。