「ポッドインストール」を実行してすべてのポッドを更新するまで、iOSアプリは問題なく動作していました。 Xcodeでビルドしようとすると、エラーが発生します。
FBSDKLoginKit/FBSDKLoginManagerLoginResult.m:43:25: No known class method for selector 'dictionary:setObject:forKey:'
使用するFBポッドバージョンは次のとおりです。
Installing FBSDKCoreKit (5.0.0)
Installing FBSDKLoginKit (4.44.1)
それらは私のポッドファイルで指定されていません。私のポッドファイルにあるFirebaseAuthの一部としてインストールされていると思います。
どうすればこれを解決できますか?
追加 pod 'FBSDKCoreKit', '~> 4.44'
をPodfileに追加します。
FBSDKLoginKit
の4.xバージョンにはバグがあります。そのpodspecは、FBSDKCoreKit
依存関係のメジャーバージョンの更新を許可していますが、コードは準拠していません。
5.0.0バージョン にあるような 4.44.1バージョン で指定されたFBSDKCoreKitバージョンはありません。
推奨されるPodfileの変更は、podspecの問題の回避策です。
FirebaseUIの現在のバージョンには、バージョン4.xのFBSDKLoginKitが必要です。
私の場合、Firebase/Core
のバージョンも次のように修正する必要がありました。
pod 'FBSDKCoreKit', '~> 4.35'
pod 'FBSDKLoginKit', '~> 4.35'
pod 'Firebase/Core', '~> 5.20'
追加情報
上記のケースは、TwitterKitを内部で使用しているTwitterログイン用のFirebaseUI/Twitter
があることです。しかしTwitterKitはサポートするために終了しました。そのため、FirebaseUI/Twitterをすでに使用している場合は、以下を使用する必要があります
pod 'FirebaseUI/OAuth'
以下の代わりに。
pod 'FirebaseUI/Twitter'
その結果、最新で安定したFBSDKCoreKit、FBSDKLoginKit、Firebase/Coreを使用できます。
正しいとマークされた上記の答えは私にとってはうまくいきませんでした。これが私がこのエラーを修正した方法です。まず、facebookからiOS SDKをダウンロードしました: https://developers.facebook.com/docs/facebook-login/ios?sdk=fbsdk
次に、ダウンロードしたsdkを開き、FBSDKCorekit.framework、FBSDKLoginKit.framework、およびBolts.frameworkをXcodeプロジェクトの「Frameworks」フォルダーにコピーしました。
(現時点ではFacebookを使用してログインしていませんが、皆さんと同じエラーが発生していました)
ついに私はポッドを次のように変更しました:
ポッド「Firebase/Core」
ポッド 'FirebaseUI/Auth'
ポッド 'FirebaseUI /電話'
ポッド 'FirebaseUI/Google'
ポッド 'FirebaseUI/Email'
ポッドの更新、プロジェクトのクリーンアップ、再構築
fb sdkの非推奨のコードに対していくつかのエラーがポップアップします。エラーから「修正」をクリックすると、プロジェクトは期待どおりに実行されます。
同様の問題があります。 FbaseKCoreKit 5.0.0(4.44.1)をFirebaseコードベースの一部としてインストールした後です。
Firebaseが使用するコードがいくつかあるようです:
これは問題があるようでエラーを出します:セレクター 'dictionary:setObject:forKey:'の既知のクラスメソッドはありません
私はそれを解決する方法を知りませんが、上記は他の人に洞察を提供するかもしれません。
最初に、インストールするポッドのバージョンを適切に確認する必要があります。以前のバージョンのFacebook Pod
をインストールしているようです。添付のスクリーンショットをご覧ください。私には問題ありません。
ただし、これらの手順に従ってこのエラーを克服できます。
Terminal
に移動し、プロジェクトパスディレクトリにジャンプして、コマンドpod install
を実行します(すべてのFacebookポッドが削除されます)。Terminal
に移動し、コマンドpod install
を実行します(最新のFacebookポッドがすべてインストールされます)。