ios - tutorial - the swift programming language pdf




Obtenir l'erreur «Aucun de ces modules» en utilisant Xcode, mais le cadre est là (20)

Je code actuellement dans Swift et j'ai une erreur:

Aucun tel module social

Mais je ne comprends pas, car le module est dans mon projet, déclaré dans "Framework et bibliothèques liés" et dans "Binaires intégrés".

Les frameworks sont en Objective-C, j'ai donc écrit un en-tête de pont pour cela.

S'il vous plaît, comment puis-je faire en sorte que Xcode reconnaisse le framework?


Assurez-vous que l'option Find implicit Dependencies dans les options de construction du schéma est activée!


Assurez-vous que la dénomination de vos configurations dans les sous-projets correspond à celle du projet "parent". Si le nom de la configuration ne correspond pas exactement (en respectant la casse), Xcode interrompra le processus d'archivage et affichera l'erreur "Aucun module de ce type ...".

Autrement dit, si vous avez un projet "parent" avec une configuration nommée "AppStore", vous devez vous assurer que tous les sous-projets ont également ce nom de configuration.

Voir mes captures d'écran ci-joint.


Dans Xcode 10.1, la solution pour moi consistait à modifier le système de construction dans Paramètres de l' espace de travail dans le menu Fichier. Par défaut, il est défini sur New Build System , modifié en Legacy Build System , ce qui a permis de résoudre le problème.


Dans mon cas, après de nombreuses tentatives pour comprendre ce que je faisais mal en important un framework, j'ai finalement découvert que le framework lui-même était le problème. Si vous n'obtenez pas votre infrastructure à partir d'une source approuvée, vous devez l'inspecter et vous assurer qu'elle contient un dossier Modules contenant un fichier module.modulemap. Si module.modulemap n'est pas présent, vous obtiendrez l'erreur "Aucun de ces modules 'MyFramework'".

Si le dossier Modules ne contient pas le dossier "MyFramework.swiftmodule", la structure sera trouvée mais Xcode ne sera pas informé de son contenu et vous obtiendrez ainsi des erreurs différentes.


En général => Cadres et bibliothèques liés, j'ai ajouté mon ./Pods/Pods.xcodeproj et il a fait l'affaire


En supposant que le cadre existe vraiment et dans le chemin, etc ... supprimez le répertoire ~ / Bibliothèque / Developer / Xcode / DerivedData / ModuleCache (et nettoyez le projet et supprimez les données dérivées spécifiques au projet).

Lorsque vous effectuez le nettoyage standard, le répertoire ModuleCache n'est pas reconstruit.


J'ai constaté que les Import Paths dans les Build Settings étaient incorrects pour un module personnalisé (MySQL). Après avoir indiqué cela dans la bonne direction, le message avait disparu.


J'ai corrigé ça avec

Cibles -> Général -> Cadres et bibliothèques liés

Ajoutez la structure qui devrait être en haut du dossier Workspace . Douleur dans le cul.


J'ai eu le même problème en utilisant Cocoapods et Swift . Je n'ai pas remarqué les lignes suivantes dans le fichier podfile:

# Uncomment this line if you're using Swift
# use_frameworks!

Donc, tout ce que j'avais à faire était de le changer pour:

# Uncomment this line if you're using Swift
use_frameworks!

... aa et ça a marché :)


J'ai eu un problème similaire avec le chargement de FacebookSDK, j'ai ajouté ~ / Documents / FacebookSDK (recherchez où sont vos cadres) aux chemins de recherche du cadre dans les paramètres de construction, puis j'ai pu importer le module FBSDKShareKit.


J'avais la même erreur lorsque j'ai ajouté quelques frameworks utilisant des Cocoapods . Si nous utilisons des xcodeworkspace dans notre projet, nous devrions utiliser xcodeworkspace au lieu de xcodeproject . Pour exécuter le projet via xcodebuild, j’ai ajouté le -workspace <workspacename> dans la commande xcodebuild et cela a parfaitement fonctionné.


Je ne sais pas pourquoi cela se produit, mais une façon de résoudre votre problème consiste à définir les chemins de recherche de la structure dans les paramètres de construction et à les placer dans un dossier contenant les structures en question. Si les frameworks sont placés dans votre répertoire de projet, définissez simplement le chemin de recherche du framework sur $(SRCROOT) et définissez-le sur récursif.


Je rencontrais ce problème aussi. La solution pour moi était que les schémas d'archivage entre les deux projets ne correspondaient pas. J'ai un xcworkspace avec un projet cadre et un projet d'application. Le problème était que, dans le schéma d'archivage de mon application, j'utilisais une configuration de construction différente de celle utilisée par la structure pour son schéma d'archivage. J'ai défini les deux configurations de construction sur Release, ce qui a résolu le problème.


Je viens de supprimer mon cocoapod. Ensuite, j'ai installé un pod pour le supprimer. Ensuite, je viens de le rajouter dans mon podfile et de le réinstaller. Cela a fonctionné. Pas certain de pourquoi.


Les étapes suivantes ont fonctionné pour moi.

  1. Quitter xcode
  2. Exécuter "pod update" dans le terminal
  3. Ouvrez .xcworkspace et générez à nouveau.

Ok, le même problème a été résolu pour moi: définir l’emplacement des données dérivées par rapport au répertoire de l’espace de travail plutôt que de le conserver par défaut. Aller aux préférences dans xcode. Accédez à l'onglet Emplacements dans les préférences et définissez Données dérivées sur Relatif. J'espère que ça aide.


Pour moi, Build Active Architecture Only était défini sur Yes pour la configuration sélectionnée. Cela a fait le tour:

Sélectionnez "Pods" dans le navigateur de projet de gauche> Sélectionnez "Paramètres de construction"> Construire une architecture active uniquement sur Non.


Si c'est vendredi après-midi ou après 1h du matin:

Ouvrir xcodeproj au lieu de xcworkspace provoquera une erreur comme celle-ci ...


Si vous construisez pour une plate-forme comme tvOS, assurez-vous d'avoir sélectionné un simulateur Apple TV (c'est-à-dire correspondant).

Construire une application tvOS avec un simulateur iOS sélectionné m'a donné exactement cette erreur. J'ai passé presque une heure à chercher toutes sortes de problèmes de construction ... doh.


Si vous utilisez Carthage, les cadres de montage restent généralement dans

$(PROJECT_DIR)/Carthage/Build/iOS

Si vous exécutez carthage update --platform ios --no-build (pour gagner du temps), les fichiers du dossier Build ne seront pas recréés, alors les modules ne seront pas disponibles pour XCode.

Dans mon cas, j'ai exécuté carthage update --platform ios , puis mon problème a été résolu.





swift