web-dev-qa-db-fra.com

"Aucun module de ce type" quand j'utilise CocoaPods

Alors voici ma procédure. Je crée une nouvelle Podfile dans le répertoire du projet, puis j’ai ajouté ce qui suit 

platform :ios, '9.0'
use_frameworks!

target 'CPod' do
pod 'AFNetworking', '~> 2.5'
pod 'ORStackView', '~> 2.0'
pod 'SwiftyJSON', '~> 2.1'
end 

Je déclenche pod install, et tout se passe bien, ouvrez la xcworkspace. Je passe ensuite à ViewController.Swift et si j'essaie d'importer un pod, je reçois No such module 'SwiftyJSON', si je devais faire import SwiftyJSON. Des idées?

EDIT: SwiftyJSON est un module basé sur Swift, pas Obj-C

54
Idris

Essayez d’ajouter le framework Pods à votre schéma de construction et de le construire. Une fois que vous l'avez construit, construisez/exécutez votre projet.

Pas:

  1. Menu Schéma> Gérer les schémas> cochez Pods> Fermer  manage

     enter image description here

  2. Sélectionnez Pods dans le menu Schéma.
  3. Construisez Pods.
  4. Sélectionnez votre projet dans le même menu, puis générez-le/exécutez-le.
76
Micah Benn

Vous devez rouvrir le fichier .xcworkspace du projet (et non le fichier .xcodeproj) après avoir installé votre fichier podfile.

  1. Cloner le repo avec CocoaPods 
  2. Ouvrez votre espace de travail/votre application.xcworkspace
  3. Sélectionnez l'application que vous souhaitez exécuter. Ajoutez SwiftyJSON.framework dans les fichiers binaires Incorporés pour ce projet.

Bonne codage :)

15
Asil ARSLAN

Vous pouvez également essayer de réinstaller les pods en utilisant:

pod deintegrate

et alors

pod install

Cela a résolu ce problème pour moi

14
Vishal

Appuyez sur Commande + Option + Maj + K et ensuite Exécuter votre application, vous verrez une magie.

Ou depuis le menu -> Produit, appuyez sur Option sur votre clavier et vous verrez le dossier Créer un dossier.

C’est drôle de voir comment Xcode pourrait faire ces choses avec nous, mais la même chose m’est arrivée lorsque j’utilisais une bibliothèque Swift avec Pod et qu’après trop de difficultés je me retrouvais avec Clean Build Folder.

14
Yash Vyas

Essayez d’utiliser la commande pod update after pod install qui résoudra le problème de Aucun module de ce type .

Merci, Ratneshwar

5
Ratneshwar Singh

Je ne sais pas si cela serait toujours utile pour les autres. Mais, dans mon cas, cela s’est avéré être une sotte erreur de ne pas faire référence à des dépendances à partir du fichier .podspec.

Nous avons une application avec plusieurs bibliothèques internes, et ces bibliothèques ont également des dépendances entre elles - ce que nous avons expliqué dans le fichier Podfile ... mais PAS dans les podspecs.

Donc, même si nos fichiers podfiles avaient:

Application/Podfile

# Development Pods
pod 'ConsumingLibrary ', :path => '../ios-consuming-lib'
pod 'DependentLibrary1', :path => '../ios-library-one'
pod 'CommonCoreLibrary', :path => '../ios-common-core-lib'

ConsumingLibrary/Podfile

# Development Pods
pod 'DependentLibrary1', :path => '../ios-library-one'
pod 'CommonCoreLibrary', :path => '../ios-common-core-lib'

J'avais besoin de l'appeler également dans les fichiers .podspec:

ConsumingLibrary/ConsumingLibrary.podspec

  # TODO
  # Add here any resources to be exported.

  s.dependency 'DependentLibrary1', '~> 0.1.0-RC'

DependentLibrary1/DependentLibrary1.podspec

  # TODO
  # Add here any resources to be exported.

  s.dependency 'CommonCoreLibrary', '~> 0.1.0-RC'

Je pense que j'ai perdu environ 2 heures à essayer de comprendre pourquoi je pouvais construire ConsumingLibrary et exécuter des tests, mais dès que j'ai construit l'application, cela a consommé les trois bibliothèques - j'ai gardé:

Aucun de ces modules 'DependentLibrary1'

5
LowAmmo

Comme @ jakub-truhlář a écrit, le problème fondamental est le fichier module.modulemap manquant en raison d'un problème de concurrence lié au mélange des bibliothèques Swift et Objective-C, mais au lieu de créer ces fichiers manuellement, il serait préférable d'essayer plusieurs fois de construisez votre projet. Une fois le projet correctement construit, validez les fichiers module.modulemap dans votre référentiel pour éviter de les perdre, par exemple en modifiant la branche actuelle.

2
samuperry

J'ai rencontré le même problème dans un framework Swift que j'ai développé. Le framework avait une dépendance du projet git et le framework lui-même a été ajouté en tant que module à mon projet principal. Donc, idéalement, la dépendance a été spécifiée dans le fichier podspec et dans le fichier podfile.

Je n'ai pas rencontré le problème lors de l'accès par le biais de mon projet principal, mais lorsque j'ai ouvert le cadre autonome, il générait l'erreur "Aucun module de ce type".

La cause principale est que les configurations de base sont définies avec le chemin qui pointe vers mon projet principal au lieu du framework lui-même, car j'ai d'abord lancé podinstall dans mon projet principal, puis dans le projet de framework.

Exemple: dans le fichier de projet, c'était comme 0091AB0C861D71C94ADD7240/* Pods-myframework.release.xcconfig */= {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-myframework.release.xcconfig"; path = "../../Apps/MyMainProject/Pods/Target Fichiers de support/Pods-myframework/Pods-myframework.release.xcconfig" ; sourceTree = ""; };

Après avoir fait le correctif mentionné ci-dessous, 4444F5B1B35F066E57F96782/* Pods-myframework.release.xcconfig */= {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-myframework.release.xcconfig"; path = "Pods/Fichiers de support ciblés/Pods-myframework/Pods-myframework.release.xcconfig" ; sourceTree = ""; };

Pour corriger l'erreur,

  1. Fichier du projet -> Configurations -> Définissez toutes les configurations définies sur None. 
  2. Supprimez le dossier Pods et Podfile.lock. 
  3. Exécutez d'abord «pod install» dans le répertoire du projet d'infrastructure, puis installez-le dans le répertoire principal du projet.
1
Arvind Abi

J'ai essayé toutes ces suggestions mais rien n'a fonctionné pour moi. Au lieu de cela, ce qui avait fonctionné pour moi était la désintégration des cosses. Supprimez ensuite le dossier des pods de la hiérarchie xcode et effectuez son installation. Tout à coup cela a fonctionné. Ne me demandez pas pourquoi, parce que de toute façon la plupart de ces suggestions sont hasardeuses, mais je serai heureux si cela fonctionne aussi pour quelqu'un d'autre

0
Andrej Jaššo

Je viens de mettre à jour des dépendances particulières dans le terminal

Allez dans le dossier du projet puis exécutez la commande ci-dessous 

pod met à jour votre nom de pod

Pour moi j'ai besoin de faire 

Mise à jour du pod ReachabilitySwift

0
karthikeyan

Cela se produit parfois lorsque vous avez un obj-c pod dans un projet Swift (même si vous utilisez le use_frameworks! dans le .podfile).

Si vous êtes sûr que pod est installé et que vous obtenez toujours No tel module, essayez ceci:

  • Aller au projet Pods dans Xcode
  • Pods
  • Faites un clic droit sur le pod concerné
  • Afficher dans le Finder

Il devrait y avoir un fichier de package avec le suffixe .framework. Créez un dossier Modules dans celui-ci. Dans ce dossier, créez un fichier nommé module.modulemap avec le code:

framework module MODULE_NAME_HERE {
  umbrella header "MODULE_NAME_HERE.h"

  export *
  module * { export * }

  link framework LINKED_FRAMEWORKS_AND_LIBRARIES_THE_POD_NEEDS_HERE
  link framework "AdSupport"
  link "c++"
  link "z"
}

Reconstruire et vous devriez être ok.

0
Jakub Truhlář

Avait ce problème en ajoutant CocoaPods dans un ancien projet, qui avait déjà inclus manuellement les bibliothèques d'avant. Cela s'est produit parce que Xcode n'était pas résolu en Framework Search Path généré par CocoaPods en raison de valeurs précédemment définies dans les paramètres de la cible.

Solution qui m'a aidé:

  1. copier l'ancien chemin

  2. appuyez sur Supprimer pour effacer complètement les paramètres Framework Search Path dans la colonne de la cible - le chemin, généré par CocoaPods y apparaît

  3. rajoute l'ancien chemin de recherche sous celui généré (nécessaire uniquement si vous avez encore des frameworks ajoutés manuellement pour travailler)

  4. Nettoyer le projet, effacer les données dérivées, construire.

Le résultat devrait ressembler à ceci (1ère ligne ajoutée par Xcode, 2ème ajoutée par CocoaPods et 3ème manuelle):  enter image description here

0
Vitalii

Assurez-vous d'importer le nom de structure correct défini dans .podspec du pod.

0
Leo

J'ai eu ce problème lorsque j'ai ouvert XCode, puis sélectionné l'espace de travail de mon projet via Fichier-> Ouvrir récent.

J'ai constaté que j'avais deux fichiers .xcworkspace sur mon système de fichiers pour le même espace de travail/projet.

Ouvrir XCode en double-cliquant sur le bon fichier .xcworkspace a fait l'affaire… .. Le bon est celui qui fonctionne.

J'ai plus tard supprimé le mauvais.

0
Gerd Castan

Ajouter le lien "c ++" dans le fichier framework.modulemap a fonctionné pour moi

0
user2029995

En cas de cibles multiples . Cible1, cible2

use_frameworks!

target 'Target1' do
 pod 'Fabric'
 pod 'Crashlytics'

   target 'Target2' do
   end

end

Ensuite, lancez pod install.

0
Yogendra Singh
  • projet propre
  • fermer xcode
  • ouvrir xcode
  • prendre plaisir
0
Ivan