web-dev-qa-db-ja.com

XcodeのFBSDKLoginKitでビルドエラーを修正する方法

「ポッドインストール」を実行してすべてのポッドを更新するまで、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の一部としてインストールされていると思います。

どうすればこれを解決できますか?

11
exoman

追加 pod 'FBSDKCoreKit', '~> 4.44'をPodfileに追加します。

FBSDKLoginKitの4.xバージョンにはバグがあります。そのpodspecは、FBSDKCoreKit依存関係のメジャーバージョンの更新を許可していますが、コードは準拠していません。

5.0.0バージョン にあるような 4.44.1バージョン で指定されたFBSDKCoreKitバージョンはありません。

推奨されるPodfileの変更は、podspecの問題の回避策です。

FirebaseUIの現在のバージョンには、バージョン4.xのFBSDKLoginKitが必要です。

7
Paul Beusterien

私の場合、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を使用できます。

4

正しいとマークされた上記の答えは私にとってはうまくいきませんでした。これが私がこのエラーを修正した方法です。まず、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の非推奨のコードに対していくつかのエラーがポップアップします。エラーから「修正」をクリックすると、プロジェクトは期待どおりに実行されます。

1
Henry Tokin

同様の問題があります。 FbaseKCoreKit 5.0.0(4.44.1)をFirebaseコードベースの一部としてインストールした後です。

Firebaseが使用するコードがいくつかあるようです:

  • (void)addLoggingExtra:(id)object forKey:(id)key {[FBSDKInternalUtility dictionary:_mutableLoggingExtras setObject:object forKey:key]; }

これは問題があるようでエラーを出します:セレクター 'dictionary:setObject:forKey:'の既知のクラスメソッドはありません

私はそれを解決する方法を知りませんが、上記は他の人に洞察を提供するかもしれません。

1
user10513445

最初に、インストールするポッドのバージョンを適切に確認する必要があります。以前のバージョンのFacebook Podをインストールしているようです。添付のスクリーンショットをご覧ください。私には問題ありません。

enter image description here

ただし、これらの手順に従ってこのエラーを克服できます。

  • コメントポッドファイル内のすべてのFacebookポッド。
  • Xcodeプロジェクトを閉じ、最近のアイテムをすべてクリアして、Xcodeを終了します。派生データを消去します。
  • Terminalに移動し、プロジェクトパスディレクトリにジャンプして、コマンドpod installを実行します(すべてのFacebookポッドが削除されます)。
  • バージョン管理システムを使用している場合は、コードを保存またはコミットしてください。
  • Xcodeプロジェクトを開いて、podファイルに移動します。
  • ここ から最新のポッドをコピーし、ポッドファイルに貼り付けます。
  • ここで再びXcodeプロジェクトを閉じ、最近のアイテムをすべてクリアし、Xcodeを終了します。 (プロジェクトをビルドまたは実行しないでください)
  • Terminalに移動し、コマンドpod installを実行します(最新のFacebookポッドがすべてインストールされます)。
  • コードを保存またはコミットすることを忘れないでください。
  • 次に、Xcodeプロジェクトを開き、フォルダーをクリーンアップして、ビルドして実行します。
0
VRAwesome