使用 Swift 4.1 编译的模块无法在 Swift 3.2.3 中导入

Posted

技术标签:

【中文标题】使用 Swift 4.1 编译的模块无法在 Swift 3.2.3 中导入【英文标题】:Module compiled with Swift 4.1 cannot be imported in Swift 3.2.3 【发布时间】:2018-05-17 18:34:03 【问题描述】:

我将应用程序中的 Usabilla SDK 更新为终端中的最新版本。 运行应用程序后,我收到此错误:

使用 Swift 4.1 编译的模块无法导入 Swift 3.2.3

当我在我的应用程序中导入以下内容时:

import Usabilla 

请提供详细的解决步骤。

【问题讨论】:

你更新 Xcode 了吗? 你为什么要使用 Swift 3.2.3 而不是 Swift 4? 在@David_Pasztor 评论中添加了“有用”。此外,您应该了解 Swift 版本控制的历史——尤其是时间安排。在短短两周多的时间里,Apple 很可能会发布 Xcode 10 和 Swift 5(立即提供测试版并于 9 月投入生产)。有点不太可能是Xcode 10 可能不支持任何版本的 Swift 3。如果您使用 Swift 编程,您需要添加到任务列表中的内容是在 6 月至 9 月期间升级到最新版本的 Swift。 (幸运的是,最糟糕的是过度移植 Swift 2 到 3 很痛苦。) 【参考方案1】:

Swift 还不提供二进制兼容性。这意味着项目中使用的所有 Swift 代码都必须使用相同版本的 Swift 编译。

您的选择是:

    查找使用您需要的 Swift 版本编译的 SDK 版本, 将 SDK 的源代码引入您的项目并在那里编译,或者 将您的项目更新到 Swift 4.1 并使用最新版本的 Xcode。

如果可能的话,我的建议是选项 3。

【讨论】:

我遇到了完全相同的情况。不知何故,根据要求,我可以更新到 Swift 最新版本。所以我遵循了提到的另一个选项。【参考方案2】:

你应该升级你的 Xcode 版本,获取它的最新版本here Swift 还不是反向兼容的,这就是你看到错误的原因。

【讨论】:

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

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

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

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

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

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

SwiftyJson 无法导入在 3.0.2 中使用 Carthage 编译的 Swift 3.1 模块中