Xcode 9にアップデートした後、私は自分のプロジェクトの1つを構築しようとしました。
私はFacebookLoginポッドを使います。 FacebookLogin/LoginButton.Swiftにコンパイラエラーがあります
@testable import FacebookCore
❌ Module compiled with Swift 3.1 cannot be imported in Swift 4.0
私のターゲットのビルド設定では、Swiftの言語バージョンはSwift 3.2に設定されています。
Facebookがポッドを更新するのを待つ必要があると思いますか。または他の提案?
ありがとうございます。
更新:
このソリューションはSwift 4.2とXcode 10でもテストされ動作しています。
オリジナル:
Swift 3.2でモジュールをコンパイルするためにCarthageを使用している場合は、ターミナルに移動して実行する必要があります。
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 3.2とSwift 4の両方を理解するSwift 4コンパイラが付属しています。2つのバージョンを混在させることもできます。残念ながら、他のバージョンはサポートされていません。
あなたがあなたの言語をSwift 3.2に設定したとしても、それはSwift 4コンパイラを使用します。
Cocoapodを使用している場合は、これを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
あるいは、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. `
"clean build folder"を実行してXcode 9を再起動すると、エラーが解決しました。また、エラーによってアプリが私のデバイスやシミュレータで実行されるのを止めることはできませんでした。
goto xcode DerivedDataディレクトリに移動して、その中にあるすべてのファイルを削除し、プロジェクトを再コンパイルします。それは私のために働きます。
デフォルトのDerivedDataディレクトリは〜/ Library/Developer/Xcode/DerivedDataです。
わたしにはできる。
1. Xcode 8でプロジェクトをきれいにする
2.プロジェクトをXcode 9でビルドまたは実行します
私はXcode 9でプロジェクトを掃除してからアプリを実行しました、それは動作します。
私はXcode 9 GMと同じ問題を抱えていました、そして、これは私の問題を解決しました:プロジェクトからそれを取り除き、そしてそれを再び「埋め込みバイナリ」にドラッグしてください。
クリーンビルドフォルダ
Cmd + option + shift + K
私は持っています
pod 'FBSDKCoreKit'
pod 'FBSDKLoginKit'
pod 'FBSDKShareKit'
私のプロジェクトとimport FBSDKLoginKit
では、ターゲットをきれいにした後、私は何の問題もありませんでした
あなたが使用しているポッドはSwiftにあり、ベータポッドなので、Swift 4コンパイラには問題がある可能性が高いので、当分の間は目的のCバージョンのポッドを使用するべきです。
あなたがポッドから使用する場合:
Podfile
のコメントにFacebookログインポッドポッドインストール
Podfile
内でFacebookLoginポッドのコメントを外しますポッドインストール
私の場合 - 実際のポッドはSwift 3.1をターゲットとしたビルド済みバイナリを含む静的Zipを参照していました。だから唯一の解決策はxcode 9からのソースでフレームワークを再構築することです。