更新:
该解决方案也在Swift 5和Xcode 11中进行了测试和工作。
原版的:
我想补充一点,如果您正在使用迦太基在Swift 3.2中编译模块,则应转到终端并运行:
sudo xcode-select --switch /Applications/Xcode-beta.app/Contents/Developer
要使用Xcode 9命令行工具,可以运行:
carthage update NameOfTheLibrary --platform iOS --no-use-binaries
这将使用您当前的命令行工具来编译库,这可能会有点慢,但是现在应该构建项目了。
注意
要还原并使用稳定的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的反馈进行编辑
也许您可以在构建目标之前对其进行清洁。这对我来说可以。
我在Xcode 9 Beta 3上遇到了同一问题,该问题指向“ Alamofire”并尝试了几种不同的解决方案,我发现最简单的解决方案是
1. CMD+SHIFT+K to clean the build
2. Restart Xcode 9 <-- make sure you do this step, that's critical. `
进行“清理构建文件夹”并重新启动Xcode 9可以为我清除错误。此外,该错误并未阻止该应用在我的设备或模拟器上运行。
转到xcode DerivedData目录,然后删除其中的所有文件并重新编译项目。它对我有用。
默认的DerivedData目录为:〜/ Library / Developer / Xcode / DerivedData。
如果使用Carthage,则打开终端;
carthage update --platform iOS --no-use-binaries
如果使用Pod,则打开终端;
pod update
(此外,如果在pod中不起作用,则可以在podfile Ex中更改SWIFT_VERSION:
config.build_settings['SWIFT_VERSION'] = '3.2'
)
后;
打开Xcode并使用;
Command+Option+Shift+K
这个对我有用。
1,在Xcode 8中清理项目
2.在Xcode 9中构建或运行项目
我用Xcode 9清理了项目,然后运行应用程序,它可以正常工作。
我在Xcode 9 GM上遇到了相同的问题,这解决了我的问题:将其从项目中删除,然后再次将其拖动到“嵌入式二进制文件”中。
清理构建文件夹
Cmd + option + shift + K
我有
pod 'FBSDKCoreKit'
pod 'FBSDKLoginKit'
pod 'FBSDKShareKit'
在我的项目中import FBSDKLoginKit
,清理目标后,我没有任何问题
由于您使用的Pod是swift且是Beta Pod,因此swift 4编译器可能会出现一些问题,因此暂时应使用Pod的Objective-C版本
如果从Pod使用:
- 在
Podfile
评论中 -
吊舱安装
- 在
Podfile
取消注释FacebookLogin荚 -
吊舱安装
- 再次运行您的项目
就我而言-实际的pod引用了一个静态zip,其中包含针对swift 3.1的预编译二进制文件。因此,唯一的解决方案是使用xcode 9中的源代码重建框架。
文章标签:cocoapods , facebook-login , ios , swift4 , xcode9-beta
版权声明:本文为原创文章,版权归 admin 所有,欢迎分享本文,转载请保留出处!
评论已关闭!