首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Xcode 9:使用SWIFT3.1编译的模块无法在SWIFT4.0中导入

Xcode 9:使用SWIFT3.1编译的模块无法在SWIFT4.0中导入
EN

Stack Overflow用户
提问于 2017-06-06 20:18:30
回答 14查看 37K关注 0票数 80

在更新到Xcode 9之后,我尝试构建我的一个项目。

我用FacebookLogin吊舱。我在FacebookLogin/LoginButton.Swiver中有一个编译器错误

代码语言:javascript
复制
@testable import FacebookCore
❌ Module compiled with Swift 3.1 cannot be imported in Swift 4.0

在我的目标的构建设置中,Swift语言版本被设置为SWIFT3.2

我想我需要等Facebook更新他们的吊舱?或者其他建议?

谢谢!

EN

回答 14

Stack Overflow用户

发布于 2017-08-01 10:11:19

更新:

解决方案也测试并在Swift 5和Xcode 11中工作。

原版:

我想补充的是,如果您正在使用Carthage编译SWIFT3.2中的一个模块,那么您应该到一个终端运行:

代码语言:javascript
复制
sudo xcode-select --switch /Applications/Xcode-beta.app/Contents/Developer

要使用Xcode 9命令行工具,可以运行:

代码语言:javascript
复制
carthage update NameOfTheLibrary --platform iOS --no-use-binaries

这将用当前的命令行工具编译库,它可能有点慢,但现在项目应该构建。

备注

要恢复和使用稳定的Xcode命令行工具,只需运行:

代码语言:javascript
复制
sudo xcode-select --switch /Applications/Xcode.app/Contents/Developer
票数 73
EN

Stack Overflow用户

发布于 2017-06-07 14:17:46

Xcode 9附带了一个Swift 4编译器,它既能理解Swift 3.2,也能理解swift 4,甚至可以让您在这两个版本之间进行混合和匹配。不幸的是,不支持其他版本。

即使您将语言设置为SWIFT3.2,它也使用Swift 4编译器.

如果使用cocoapods,可以将其添加到pod文件的末尾,以强制荚使用SWIFT3.2或4.0:

代码语言:javascript
复制
post_install do |installer|
    installer.pods_project.targets.each do |target|
        target.build_configurations.each do |config|
            config.build_settings['SWIFT_VERSION'] = '3.2'
        end
    end
end

或者,您可以暂时将从吊舱中的文件放到您的项目中,直到FacebookLogin被更新为SWIFT3.2或4。

注:根据马特的反馈编辑

票数 26
EN

Stack Overflow用户

发布于 2017-06-07 09:04:59

也许你能在建造目标之前把它清理干净。对我来说很好。

票数 19
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44399109

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档