web-dev-qa-db-fra.com

Comment réparer l'erreur de construction avec FBSDKLoginKit dans Xcode

Mon application ios fonctionnait bien jusqu'à ce que j'exécute "pod install" et mette à jour tous mes pods. Je reçois maintenant une erreur en essayant de construire dans Xcode.

FBSDKLoginKit/FBSDKLoginManagerLoginResult.m:43:25: No known class method for selector 'dictionary:setObject:forKey:'

Voici les versions de pod FB utilisées:

Installing FBSDKCoreKit (5.0.0)
Installing FBSDKLoginKit (4.44.1)

Ceux-ci ne sont pas spécifiés dans mon podfile. Je pense qu'ils sont installés dans le cadre de FirebaseAuth qui est dans mon podfile.

Comment puis-je résoudre ça?

11
exoman

Ajouter pod 'FBSDKCoreKit', '~> 4.44' au Podfile.

Il y a un bogue dans les versions 4.x de FBSDKLoginKit. Son podspec permet des mises à jour de versions majeures de sa dépendance FBSDKCoreKit, mais le code n'est pas conforme.

Il n'y a pas de version FBSDKCoreKit spécifiée dans version 4.44.1 comme il y en a version 5.0. .

Le changement de fichier pod proposé est une solution de contournement pour le problème podspec.

La version actuelle de FirebaseUI nécessite la version 4.x de FBSDKLoginKit.

7
Paul Beusterien

Dans mon cas, je devais également corriger la version de Firebase/Core, comme suit.

pod 'FBSDKCoreKit', '~> 4.35'
pod 'FBSDKLoginKit', '~> 4.35'
pod 'Firebase/Core', '~> 5.20'

Informations supplémentaires

Le cas ci-dessus est que vous avez FirebaseUI/Twitter pour la connexion à Twitter, qui utilise TwitterKit en interne. Mais TwitterKit a fini de prendre en charge. Donc, si vous avez déjà utilisé FirebaseUI/Twitter, les éléments suivants doivent être utilisés

pod 'FirebaseUI/OAuth'

au lieu de ci-dessous.

pod 'FirebaseUI/Twitter'

Au final, nous pouvons utiliser les derniers et stables FBSDKCoreKit, FBSDKLoginKit et Firebase/Core.

4

la réponse ci-dessus marquée comme correcte n'a pas fonctionné pour moi. c'est ainsi que j'ai corrigé cette erreur. J'ai d'abord téléchargé le SDK iOS depuis Facebook: https://developers.facebook.com/docs/facebook-login/ios?sdk=fbsdk

puis j'ai ouvert le sdk téléchargé et copié FBSDKCorekit.framework, FBSDKLoginKit.framework et Bolts.framework dans le dossier "Frameworks" de mon projet Xcode.

(Je n'utilise pas Facebook pour me connecter pour le moment, mais j'obtenais toujours la même erreur que vous)

Enfin, j'ai changé mon pod pour:

pod 'Firebase/Core'
pod 'FirebaseUI/Auth'
pod 'FirebaseUI/Phone'
pod 'FirebaseUI/Google'
pod 'FirebaseUI/Email'

mettre à jour le pod, nettoyer le projet et reconstruire

quelques erreurs apparaissent pour le code obsolète dans le fb sdk. cliquez sur "réparer" dans l'erreur et le projet s'exécute comme prévu.

1
Henry Tokin

J'ai un problème similaire. C'est après l'installation de FBSDKCoreKit 5.0.0 (au lieu de 4.44.1) dans le cadre de la base de code Firebase.

Il semble qu'il puisse y avoir du code que Firebase utilise:

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

Cela semble être problématique et donne l'erreur: Aucune méthode de classe connue pour le sélecteur 'dictionary: setObject: forKey:'

Bien que je ne sache pas comment le résoudre, ce qui précède peut fournir des informations aux autres.

1
user10513445

Tout d'abord, vous devez vérifier la version appropriée du pod que vous installez. Parce qu'il semble que vous installez une version antérieure de Facebook Pod. Veuillez regarder la capture d'écran que j'ai jointe. Ça marche bien pour moi.

enter image description here

Bien que vous puissiez suivre ces étapes pour surmonter cette erreur.

  • Commenter tous les pods Facebook dans le fichier pod.
  • Fermez maintenant le projet Xcode, effacez tous les éléments récents, quittez Xcode. Nettoyer les données dérivées.
  • Accédez à Terminal, accédez au répertoire du chemin du projet, exécutez la commande pod install (Cela supprimera tous les pods Facebook).
  • Veuillez enregistrer ou valider votre code si vous utilisez le système de gestion des versions.
  • Ouvrez maintenant votre projet Xcode et accédez au fichier pod.
  • Copiez les derniers pods de ici et collez-les dans le fichier pod.
  • Maintenant, fermez à nouveau le projet Xcode, effacez tous les éléments récents, quittez Xcode. (Veuillez ne pas construire ou exécuter le projet)
  • Accédez à Terminal et exécutez la commande pod install (Il installera tous les derniers pods Facebook).
  • N'oubliez pas d'enregistrer ou de valider le code.
  • Ouvrez ensuite le projet Xcode, nettoyez le dossier, générez puis exécutez.
0
VRAwesome