AFNetworking ne comstackra pas

Je suis totalement bloqué en essayant de lancer un projet sur le simulateur en utilisant AFNetworking. J'ai déjà utilisé cette dépendance sur d'autres projets, donc je ne comprends pas ce qui ne va pas ici. D'abord, l'erreur lorsque j'essaie d'exécuter le projet:

Undefined symbols for architecture x86_64: "_OBJC_CLASS_$_AFHTTPSessionManager", referenced from: _OBJC_CLASS_$_SharedNetworkObject in SharedNetworkObject.o "_OBJC_CLASS_$_AFJSONResponseSerializer", referenced from: objc-class-ref in SharedNetworkObject.o "_OBJC_METACLASS_$_AFHTTPSessionManager", referenced from: _OBJC_METACLASS_$_SharedNetworkObject in SharedNetworkObject.o ld: symbol(s) not found for architecture x86_64 clang: error: linker command failed with exit code 1 (use -v to see invocation) 

Je suis sûr que cela fait partie du problème, mais je ne sais pas comment le résoudre:

entrez la description de l'image ici

C'est le file .h offensant:

 #import <Foundation/Foundation.h> #import <AFNetworking/AFNetworking.h> #import "SharedSessionKey.h" @interface SharedNetworkObject : AFHTTPSessionManager + (SharedNetworkObject *) sharedNetworkObject; // class method to return the singleton object @end 

Il peut être intéressant de noter que lorsque je commence à taper la ligne d'import pour AFNetworking, la ligne se remplit après quelques caractères, donc je sais qu'il y a une certaine conscience de la présence de la dépendance AFNetworking.

J'ai installé la dépendance en utilisant CocoaPods. Voici mon Podfile:

 # Uncomment this line to define a global platform for your project platform :ios, '8.0' source 'https://github.com/CocoaPods/Specs.git' target 'WeRun' do pod "AFNetworking", "2.5.2" end target 'WeRunTests' do end 

Et, bien sûr, je travaille dans .xcworkspace (pas .xcodeproj ).

Encore une chose, mon file xcconfig ressemble à ceci, ce qui correspond à d'autres builds AFNetworking réussis:

 GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/AFNetworking" OTHER_CFLAGS = $(inherited) -isystem "${PODS_ROOT}/Headers/Public" -isystem "${PODS_ROOT}/Headers/Public/AFNetworking" OTHER_LDFLAGS = -ObjC -l"Pods-MyApp-AFNetworking" -framework "CoreGraphics" -framework "MobileCoreServices" -framework "Security" -framework "SystemConfiguration" OTHER_LIBTOOLFLAGS = $(OTHER_LDFLAGS) PODS_ROOT = ${SRCROOT}/Pods 

Je ne sais pas quoi d'autre à searchr. J'ai complètement supprimé le pod et réinstallé, seulement pour find exactement la même erreur. Quelqu'un peut-il m'aider à comprendre cela? Merci!

J'ai passé quelques heures à me battre avec ce même problème, en passant en revue tous les hits de Google que j'ai pu find. La construction de l'appareil fonctionnait, mais pas celle du simulateur.

Voici les étapes qui ont finalement résolu le problème pour moi:

  1. Effacez les caches XCode:

     rm -rf ~/Library/Developer/Xcode/DerivedData/ 
  2. Effacez les caches CocoaPods et réinstallez les dependencies:

     rm -rf "${HOME}/Library/Caches/CocoaPods" rm -rf "`pwd`/Pods/" pod update 
  3. Enfin, allez dans le projet "Pods" et paramétrez " Build Active Architectures Only to No également pour la configuration "Debug".

Je vous suggère d'append le drapeau $ (hérité) dans les "Paramètres de construction".

  • Appuyez sur l'icône du projet bleu
  • Sélectionnez l'onglet "Paramètres de construction"
  • Sous "Liaison", vous findez un paramètre appelé "Autres indicateurs de liens".
  • append $ (hérité) dans le champ de text

Ne donnez pas la version après AFNetworking dans le file pod. Et essayez à nouveau. Assurez-vous de supprimer la virgule aussi.

Bien, j'ai résolu ceci, mais je ne suis pas sûr pourquoi cela a fonctionné. J'expérimentais avec les autres drapeaux de lieur dans les parameters de construction. J'ai supprimé le drapeau qui a été mis là par l'installation de CocoaPods (vraisemblablement) et l'ai remplacé en copiant l'indicateur du file .xcconfig . Plus précisément, j'ai ajouté ce text: -l"Pods-WeRun-AFNetworking" comme deuxième drapeau juste après -ObjC . Il me semble être exactement ce que je viens de supprimer, donc j'hésite vraiment à suggérer cela comme une «réponse», mais cela fonctionne maintenant, donc quelque chose doit avoir changé.

Si quelqu'un peut faire la lumière sur cela ou me dire que je me trompe, s'il vous plaît faites le moi savoir. Merci pour les suggestions.

J'ai eu le même problème, quand j'avais -lc++ déjà placé sur d' Other linker flags pour l'utilisation de la bibliothèque cpp.
J'ai ajouté ces deux indicateurs -ObjC -l"AFNetworking" sur d' Other linker flags , qui ont fonctionné et compilé avec succès. Ce sont les deux drapeaux -ObjC et -l"AFNetworking" . Vous scannez append simultanément -ObjC -l"AFNetworking" .

Une méthode simple. Téléchargez le file de référentiel. Faites glisser et déposez le contenu du dossier AFnetworking (Vous pouvez créer des groupes si nécessaire) puis utilisez la bibliothèque. (Utilisez #import "AFnetworking.h")