Ios 不能在Swift 4.0.1中导入使用Swift 4.0编译的模块

Ios 不能在Swift 4.0.1中导入使用Swift 4.0编译的模块,ios,swift,xcode,xcode9,swift4,Ios,Swift,Xcode,Xcode9,Swift4,但是,我使用相同的Xcode重新编译了框架,它仍然给我这个错误 基本SDK iOS 11.1,适用于两者 Swift语言版本Swift 4.0 不使用吊舱/迦太基 我希望有人知道更新: 对于Xcode的发布版本: 当使用Xcode 9.1、9.2、9.3、9.4、10等打开使用早期Xcode工具构建的框架的项目时,会出现此错误(以及涉及Swift 4.1、4.2等的类似错误) 要解决此问题,请使用迦太基(Carthage update--platform iOS)、CoCoPapods(po

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

  • 基本SDK iOS 11.1,适用于两者
  • Swift语言版本Swift 4.0
  • 不使用吊舱/迦太基

我希望有人知道更新:

对于Xcode的发布版本:

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

要解决此问题,请使用迦太基(
Carthage update--platform iOS
)、CoCoPapods(
pod update
pod install
)或使用新更新的Xcode工具手动更新和重建框架。当您更新Xcode时,这些工具应该会自动更新,但如果没有,您可以按照原始答案中概述的步骤进行操作

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

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

对于Xcode的测试版:

请参阅下面的原始答案,然后按照上面的步骤进行操作

原始答案:

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

使用以下命令签入终端:

xcodebuild -version

或者只需进入Xcode preferences->Locations并检查/更改命令行工具到Xcode 9.1。然后应该设置您。

我的问题是由于没有为Swift 4.0.2编译外部框架。我已通过添加此文件,因此正在运行:

carthage update --platform iOS

然后清理项目
cmd+shift+k
和构建文件夹
cmd+option+shift+k
,并删除派生数据文件夹(仅将其移动到垃圾站)对我有效。

安装特定Xcode版本的Xcode工具链,该工具链从中为您工作

Xcode工具链包括编译器、lldb和其他相关工具的副本,这些工具是在特定版本的Swift中提供内聚开发体验所必需的

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

这将允许您暂时编译和运行应用程序。

在我的例子中(Xcode 9.2):

我去了Xcode
Preferences>Locations>Derived Data


然后我删除了数据并进行了干净的构建,一切正常。

我用Xcode 10 beta解决了这个问题,它添加了Swift 4.2。我的问题与迦太基或任何外部依赖项无关

进入所有Xcode目标的
YourTarget>buildsettings>Swift语言版本

我的全部设置为
swift4

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

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

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

然后,我将每个目标的
Swift语言版本设置为
Swift 4.2
,从而消除了错误


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

在我的情况下,我下载了xCode 11 Beta版来测试SwiftUI。当我运行我的项目时,我得到了“Swift 5.0.1编译器无法导入使用Swift 5.1编译的模块:…”错误

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

Xcode->Preferences->Location->Xcode命令行工具


我希望,这将帮助那些想用新的freamework进行测试的人:)

在我的例子中,我使用CocoaPods和plugin
cococoapods binary
将库预构建为二进制文件。在我将Xcode从10升级到11之后,Xcode给了我以下错误:

Module compiled with Swift 5.0.1 cannot be imported by the Swift 5.1 compiler

我通过删除
/Pods
目录并运行
pod安装来修复它。在我的例子中,我用它抱怨的任何版本重新编译了框架

要重新编译,请运行
pod update
或更新迦太基(您使用的任何一个),然后构建项目


然后在finder中搜索框架。复制粘贴框架。框架的
,并确保“如果需要,复制项目”。再次构建项目,它应该会工作。

我还清除了派生数据,并清理了项目,不知道是否每个人都需要,但这里似乎是。谢谢你。我在github(mattdonnelly/swifter)上使用的repo是Swift 4.0,但显然是使用XCode 9.0编译的,所以我遇到了这个问题。在Github上为XCode 9.1及以上版本重新编译其他人的cocoapod需要哪些步骤?有没有添加命令行工具的方法?我的命令行下拉列表中只有Xcode 9.3。我有这个问题,因为我的一些播客还没有准备好使用Swift 4.2,因此我不得不将
Swift语言版本
锁定到
Swift 4
。然后它成功了。加上1作为清理构建文件夹的快捷方式——这不是我一下子就知道怎么做的。事实上,这基本上就是解决方案。由于苹果最新的swift更新,今天(4月18日)也发生了同样的事情:)cmd+option+shift+k是更新迦太基后的诀窍。谢谢我在查找
生成设置时遇到问题