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
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:
Vous devez rouvrir le fichier .xcworkspace du projet (et non le fichier .xcodeproj) après avoir installé votre fichier podfile.
Bonne codage :)
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
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.
Essayez d’utiliser la commande pod update after pod install qui résoudra le problème de Aucun module de ce type .
Merci, Ratneshwar
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'
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.
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,
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
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
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:
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.
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é:
copier l'ancien chemin
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
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)
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):
Assurez-vous d'importer le nom de structure correct défini dans .podspec
du pod.
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.
Ajouter le lien "c ++" dans le fichier framework.modulemap a fonctionné pour moi
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.