使用 Swift 2.3 编译的模块无法在 Swift 3.0 中导入

Posted

技术标签:

【中文标题】使用 Swift 2.3 编译的模块无法在 Swift 3.0 中导入【英文标题】:Module compiled with Swift 2.3 cannot be imported in Swift 3.0 【发布时间】:2016-09-14 07:22:31 【问题描述】:

我将 Facebook SDK (Swift) 添加到我的项目中。 现在我更新了 Xcode 8 和 Swift 3。 我的构建时间有错误

Module compiled with Swift 2.3 cannot be imported in Swift 3.0 

不支持很奇怪。 有没有人遇到过类似的问题?

【问题讨论】:

您是否检查过是否有更新的适用于 Xcode 8 的 Facebook SDK 可用? 是的,我检查了它,我做了carthage update 【参考方案1】:

记得为你的项目目标设置Use Legacy Swift Language VersionYES

您是在 2.3 而不是 3.0 中构建项目

【讨论】:

对于不同的模块SinchVerification-Swift,我有同样的错误。更新旧版没有帮助。我已经做了pod update 并得到了最新的。有解决办法吗? 嗨,使用旧版对我不起作用。但我尝试carthage update 这也不起作用。我使用 Carthage 作为依赖项。 作为@subjective_c,Facebook 将很快发布 swift 2.3 版本。就我个人而言,这个错误出现在ObjectMapper 中,并为我将标志Use Legacy Swift Language Version 设置为YES...【参考方案2】:

请记住,如果您想使用 Swift 3 作为主要项目的语言,您必须使用 Swift 3 或 Swift 2.2- 的 pod。如果您尝试使用 Swift 2.3 项目,它们将无法编译(如您描述的错误)。

因此,最好的办法是使用 Swift 3 pod 或 Swift 2(2.1 或 2.2)pod 并为该特定 pod 选择 Use Legacy SLV(在您要使用的特定目标的“Pods”构建设置中)。

【讨论】:

【参考方案3】:

尝试删除/tmp/Build/Products/.../tmp/Build/Intermediates/...下的所有文件并重新构建。

【讨论】:

【参考方案4】:

这可能有点晚了,但是将设置更改为“是”和“否”并没有帮助我,只是从模拟器中清除我的派生数据就可以让一切正常。

【讨论】:

【参考方案5】:

目前,Facebook SDK 支持not yet 支持使用 Swift 3.0 编写的项目。

您可以在他们的 Github 上订阅几个 issues 以获取更新。

您现在必须使用 Swift 2.3。 Facebook 表示,它计划在 GM 发布后不久发布更新,这已经发生,因此可能会在接下来的几周内发布。

【讨论】:

以上是关于使用 Swift 2.3 编译的模块无法在 Swift 3.0 中导入的主要内容,如果未能解决你的问题,请参考以下文章

Swift 4 中的 AlamofireImage 问题

如何使用 Swift 2.3 和 3.0 编译模块?

无法在 Swift 2.3 中编译 Siri 扩展

使用 Swift 3.0.1 编译的模块无法在 BuddyBuild 上的 Swift 3.0 中导入

Xcode 9:使用 Swift 3.1 编译的模块无法在 Swift 4.0 中导入

使用 Swift 4.0 编译的模块无法在 Swift 3.1 中导入框架二进制文件