Je suis nouveau sur Swift et je me bats avec une erreur après avoir (éventuellement) correctement installé un framework tiers via CocoaPods.
L'erreur est la suivante.
<unknown>:0: error: filename "MainController.Swift" used twice: '/Users/myname/Desktop/ProjectName/ProjectName/Controllers/MainController.Swift' and '/Users/myname/Desktop/ProjectName/ProjectName/Controllers/MainController.Swift'
<unknown>:0: note: filenames are used to distinguish private declarations with the same name
Command /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/swiftc failed with exit code 1
Pour autant que je puisse me renseigner sur d'autres forums et il semble évident que je dois supprimer l'un des fichiers utilisés deux fois. Cependant, je ne vois pas où ils seraient installés deux fois. Si je supprime le fichier du dossier/Controllers, l'erreur devient `` fichier introuvable '', etc.
Ma question est donc de savoir où se trouvent ces fichiers en conflit et comment puis-je supprimer l'un d'eux en toute sécurité? Ou est-ce plus qu'il n'y a qu'un seul fichier mais qu'il est utilisé deux fois - dans ce cas, comment puis-je arrêter cela?
Merci beaucoup.
Ok, je pense que les commentaires se perdent, alors je clarifie ici pour voir si peut déclencher une réponse car il n'a pas été en mesure de générer et d'exécuter cela depuis hier.
Je n'ai maintenant que les fichiers Swift dans le dossier Pods-> Pods/MainController.
Lorsque je crée, j'obtiens un fichier introuvable. Cependant, le fichier qu'il recherche se trouve dans le dossier App-> Controllers, d'où je l'ai supprimé. Si je mets le fichier là-dedans, j'obtiens l'erreur "utilisé deux fois".
Alors, comment puis-je l'empêcher d'essayer de trouver le fichier dans les contrôleurs et de le rechercher dans les pods?
Merci
Essayez de rechercher, si vous avez ajouté le même ViewController - MainController.Swift
deux fois.
Sinon, recherchez class MainController
dans la base de code.
Concernant les Pods, il est préférable d'utiliser tous les Pods comme frameworks,
Essayez donc d'utiliser 'use_frameworks!'
dans votre Podfile
, puis à partir du terminal, réinstallez les modules "pod install
".
Vérifiez que le fichier n'est pas inclus deux fois dans les paramètres "Build Phases" "Compile Sources" de la cible. Cela peut se produire lorsque vous fusionnez project.pbxproj.
S'il s'agit de données de base et que Xcode ne génère pas les entités pour vous au moment de la construction (vous les avez créées manuellement vous-même) et que vous rencontrez ce problème, il est probable que vous n'ayez pas vérifié la mise à jour de l'entité dans le .xcdatamodelld fichier. Ce qui se passe, c'est que Xcode créera une classe en double de votre classe existante, puisque vous avez demandé à Xcode de générer l'entité au moment de l'exécution.
Dans l'inspecteur de modèle de données, remplacez "Module" par "Module de produit actuel" et "Codegen" par "Manuel/Aucun".
L'idée principale est ... oui, vérifiez les classes en double. Mais dans mon cas, je n'en avais pas. J'avais un gros projet, j'ai ajouté WatchKit, beaucoup de choses et à un moment donné j'ai eu une classe "dupliquée". J'ai supprimé le doublon mais le problème est resté. Pour le réparer, j'ai fait ceci:
Cela peut être dans votre project.pbxproj lorsque vous effectuez une fusion avec github ou un outil similaire.
Cela peut être corrigé en ouvrant le project.pbxproj dans votre éditeur de texte préféré et en supprimant les déclarations en double.
J'espère que cela résoudra votre problème.
J'ajouterais à la réponse de Josh O'Conners en disant que faire les changements qu'il a recommandés était à l'origine de mon problème. J'ai dû nettoyer le dossier de construction en appuyant sur shift-option-command-k pour terminer le correctif.
Pour vérifier si le fichier est inclus dans les sources de compilation deux fois sans faire défiler des centaines de mouches, procédez comme suit:
Dans le cas des classes de modèle de données de code. Sélectionnez le modèle de données de code, puis sélectionnez l'entité, modifiez la valeur de 'Codegen' en Manuel/Aucun.
Ça m'aide.