使用 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 Version
到YES
您是在 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 3.0.1 编译的模块无法在 BuddyBuild 上的 Swift 3.0 中导入