Xcode 9:使用Swift 3.1编译的模块不能在Swift 4.0中导入
更新到Xcode 9之后,我试图build立我的一个项目。
我使用FacebookLogin窗格。 我在FacebookLogin / LoginButton.swift中有一个编译器错误
@testable import FacebookCore ❌ Module compiled with Swift 3.1 cannot be imported in Swift 4.0
在我的目标的构build设置中,Swift语言版本设置为Swift 3.2 。
我想我需要等待Facebook更新他们的pod? 还是有其他build议?
谢谢 !
我想补充一点,如果你使用Carthage在Swift 3.2中编译模块,你应该去一个terminal并运行:
sudo xcode-select --switch /Applications/Xcode-beta.app/Contents/Developer
要使用Xcode 9命令行工具,可以运行:
carthage update NameOfTheLibrary --platform iOS --no-use-binaries
这将使用当前的命令行工具编译库,它可能有点慢,但现在应该build立项目。
注意
要恢复和使用稳定的Xcode命令行工具,只需运行:
sudo xcode-select --switch /Applications/Xcode.app/Contents/Developer
Xcode 9带有一个Swift 4编译器,可以理解Swift 3.2和Swift 4,它甚至可以让你在两个版本之间进行混搭。 不幸的是,其他版本不支持。
即使你将语言设置为Swift 3.2,它也使用Swift 4编译器。
如果你使用的是cocoapods,你可以把它添加到你的pod文件的最后,强制这个pod使用Swift 3.2或者4.0:
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
或者,您可以将来自Pod的文件直接放到您的项目中,直到FacebookLogin更新为Swift 3.2或4。
注意:根据Matt的反馈进行编辑
也许你可以在构build目标之前清理目标。 这对我来说可以。
做一个“干净的生成文件夹”,重新启动Xcode 9为我清理错误。 此外,错误并没有阻止应用程序在我的设备或模拟器上运行。
转到xcode DerivedData目录然后删除它里面的所有文件,并重新编译你的项目。 它为我工作。
默认的DerivedData目录是〜/ Library / Developer / Xcode / DerivedData。
我在Xcode 9 Beta 3上遇到了同样的问题,它指向“Alamofire”并尝试了几个不同的解决scheme,我发现的最简单的方法是
1. CMD+SHIFT+K to clean the build 2. Restart Xcode 9 <-- make sure you do this step, that's critical. `
这个对我有用。
1.在Xcode 8中清理你的项目
2.在Xcode 9中build立或运行你的项目
如果使用迦太基 ,打开terminal和;
carthage update --platform iOS --no-use-binaries
如果使用Pod ,打开terminal和;
pod update
(如果在pod中不工作,则可以在podfile中更改SWIFT_VERSION例如:
config.build_settings['SWIFT_VERSION'] = '3.2'
)
后;
打开Xcode并使用;
Command+Option+Shift+K
我有同样的问题与Xcode 9 GM,这解决了我的问题:从项目中删除它,并再次拖到“embedded式二进制文件”。
我在Xcode 9中清理了项目,然后运行该应用程序,它工作。
我有
pod 'FBSDKCoreKit' pod 'FBSDKLoginKit' pod 'FBSDKShareKit'
在我的项目中import FBSDKLoginKit
,清理目标后我没有任何问题
由于你使用的窗口是快速的,并且是一个testing版,所以你很可能会在swift 4编译器中遇到一些问题,你应该暂时使用pod的objective-c版本
如果你从Pod使用:
- 在
Podfile
留言评论FacebookLogin pod -
荚安装
- 在
Podfile
取消注释FacebookLogin窗格 -
荚安装
- 再次运行你的项目
对于我的情况 – 实际的pod引用了一个静态的zip,带有swift 3.1的预编译的二进制文件。 所以唯一的解决scheme是用xcode 9的源代码重build框架。
- cocoapods – 使用特定的pod版本
- “吊舱安装”不会更新现有的吊舱
- Cocoapods ld:找不到-lPods-Projectname的库
- 如何为我的Xcode项目在我的podfile中指定多个目标?
- Cocoapods:将MagicalRecord注销
- 更新RKLog.h中找不到的RestKit'lcl_RK.h'文件
- CocoaPods无法在macOS高Sierra
- Cocoapods命令由于“没有这样的文件或目录@ dir_initialize – /Users/<username>/.cocoapods/repos(Errno :: ENOENT)”而失败
- 找不到RKObjectMapping.h