使用 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 中导入框架二进制文件