Déplacement de fichiers dans un dossier réel dans Xcode


177

Quand j'ai commencé mon projet, j'étais heureux d'utiliser des groupes dans Xcode plutôt que des dossiers littéraux: comme j'utilise le navigateur dans Xcode pour accéder à tout, les choses étaient bien organisées et j'étais heureux.

Cependant, maintenant que le projet est sur le point d'être partagé pour le contrôle de version, le dossier du projet lui-même est un spectacle d'horreur pour ceux qui essaient de le scanner via un terminal, environ 300 fichiers, dont plus de la moitié sont des graphiques.

J'essaye maintenant de réorganiser les choses, de créer de vrais dossiers et de les importer dans Xcode. Malheureusement, Xcode ne me permet pas de travailler avec eux comme il le fait avec des groupes. Par exemple, si je clique avec le bouton droit sur un dossier ajouté (bleu, pas jaune) et que je choisis d'ajouter des fichiers existants, il ne les met pas réellement dans ce dossier, il les place à sa racine.

De même, je ne peux pas déplacer un fichier d'un faux-dossier (un groupe) dans un vrai dossier: Xcode ne considère pas les vrais dossiers comme des endroits valides vers lesquels déplacer des éléments.

Qu'est-ce que je rate? Comment puis-je convaincre Xcode de me laisser utiliser les dossiers comme j'utilise les groupes? Il y a une réponse ici à une question un peu similaire , mais cela ne résout pas vraiment mon problème puisque je travaille avec des fichiers existants.

Réponses:


176

Une approche moderne (et complètement simple!) Pour 2017 (Xcode 6, 7, 8 et parfois 9, car il le fait automatiquement de temps en temps):

Si vous déplacez un tas de fichiers dans un nouveau dossier et que vous conservez la hiérarchie enfant, c'est en fait beaucoup plus facile que de déplacer chaque fichier individuellement:

  1. Créez de nouveaux groupes dans l'arborescence des dossiers Xcode et organisez vos fichiers comme vous le souhaitez.
  2. Créez une arborescence de dossiers physiques correspondante dans le Finder et organisez vos fichiers physiques en eux pour correspondre à ce que vous avez fait à l'étape 1.
  3. Toutes les références dans Xcode devraient maintenant être rouges (c'est OK!).
  4. Dans le gestionnaire d'identité et de type, sélectionnez le groupe dans Xcode que vous souhaitez déplacer, puis cliquez sur l'icône de dossier dans le volet d'informations:

  5. Dans la boîte de dialogue de sélection du Finder, recherchez le nouveau dossier équivalent que vous avez créé pour ce groupe à l'étape 2. Tous les fichiers de ce groupe seront désormais automatiquement redécouverts!

N'est-ce pas sympa? Au plus, vous devrez répéter ces 5 étapes une fois pour chaque nouveau groupe que vous avez créé (ce qui bat le déplacement de chaque fichier individuellement!)

Points bonus!

Supposons que vous ayez accidentellement raté le mouvement et que maintenant un tas de vos fichiers sont rouges et ne peuvent pas être trouvés: sélectionnez plusieurs fichiers qui sont cassés, et en utilisant la même icône de dossier dans la capture d'écran de l'étape 4, trouvez le dossier correct qui les contient fichiers et ils résoudront automatiquement les chemins manquants.


3
Cela rend les fichiers non suivis dans Git. Bien sûr, je peux toujours lire le fichier mais est-ce que je manque quelque chose?
SleepNot

2
@jeraldo ne sais pas quelle saveur de git vous utilisez mais je n'ai jamais eu ce problème. Vous pouvez cependant le faire facilement git add ..
brandonscript

Il me manque quelque chose et je ne suis pas sûr de ce que c'est. Peut-être que je ne comprends pas la signification des mots "organiser vos fichiers en eux ..." à l'étape (1) ?? Je suppose que cela signifie "Ajouter les fichiers au groupe par glisser-déposer ou autre". Mais si je fais cela, alors bien sûr Xcode reconnaît les fichiers et ne les affiche pas en rouge, comme indiqué à l'étape (3). Une idée de ce que je fais mal?
hkatz

Avez-vous déplacé les fichiers physiques comme à l'étape 2?
brandonscript

1
Ah, je l'ai compris! L'étape (2) était juste un peu trop cryptique pour moi. Si je le réécrivais, je dirais quelque chose comme "Créez une arborescence de dossiers physiques correspondante, puis utilisez la commande Afficher dans le Finder de Xcode pour localiser les fichiers que vous avez ajoutés au nouveau groupe à l'étape (1) et déplacer physiquement ces fichiers dans le dossier que vous venez de créer. " Quelque chose comme ça ...
hkatz

119

EN OUTRE ÉDITÉ EN JUIN 2017: Xcode 9 le fait automatiquement, sans effort particulier. Cette réponse et celle de Brandon s'appliquent uniquement à Xcode 8 et versions antérieures.

ÉDITÉ EN DÉCEMBRE 2016: La réponse de Brandon ci-dessous est une meilleure solution maintenant. À l'époque où cette réponse a été créée en 2010, c'était la seule option que je pouvais trouver. Je suggère maintenant la réponse de Brandon , ci-dessous.


Il s'avère que déplacer des fichiers dans de vrais dossiers est certainement possible, mais pas aussi simple qu'il devrait l'être.

J'ai obtenu les informations de base d'une question ici, Xcode organisant des fichiers et des dossiers (objets de modèle de données de base - iPhone) , mais j'ai appris des choses importantes en cours de route.

Le processus

Le déplacement des fichiers est un processus en deux étapes avec plusieurs sous-étapes:

  1. Dites à Xcode où vous voulez que les fichiers soient :

    • Cliquez avec le bouton droit / Ctrl sur le fichier ou le groupe de fichiers que vous souhaitez déplacer et choisissez Obtenir des informations dans le menu contextuel qui apparaît. La fenêtre Informations sur le groupe ou Informations sur le fichier apparaît.

    • Cliquez sur le bouton Choisir à l'extrême droite de la fenêtre dans la zone Chemin . Une boîte de dialogue apparaît.

    • Accédez au dossier dans lequel vous souhaitez déplacer les fichiers. Créez un nouveau dossier si nécessaire. Cliquez sur le bouton Choisir dans le coin inférieur droit de la boîte de dialogue, puis fermez la fenêtre Informations sur le groupe / Informations sur le fichier .

    • Les noms des fichiers / fichiers du groupe deviendront rouges pour indiquer que Xcode ne peut pas les trouver à l'endroit que vous avez spécifié.

  2. Déplacer les fichiers réels

    • Dans le Finder (ou Git), déplacez les fichiers que vous avez sélectionnés à l'étape 1 dans les dossiers réels dans lesquels vous les souhaitez.

    • Revenez à Xcode. Les fichiers / groupes devraient tous être redevenus noirs. Si certains sont toujours rouges, vous avez manqué de déplacer quelque chose vers le bon dossier.

Conseils

J'ai appris quelques choses importantes en ajustant les ~ 300 fichiers de ce projet:

  • Certains fichiers refusent de se déplacer de cette façon; c'est-à-dire que lorsque vous accédez à la nouvelle destination, le bouton Choisir est désactivé, tout comme le bouton Nouveau dossier . La solution, bien que je ne sache pas pourquoi cela fait une différence, consiste à utiliser d'abord Xcode pour mettre ces fichiers dans un groupe (clic droit / contrôle sur les fichiers et choisir Groupe , et donner un nom au groupe), puis déplacer le groupe vers le nouvel emplacement. Une fois que vous avez réellement déplacé les fichiers dans le Finder, vous pouvez les supprimer du groupe (en les faisant glisser dans le nouveau groupe / dossier parent et en supprimant le groupe).

  • Arrêtez et créez toutes les quelques minutes, après avoir terminé l'étape 2 pour un certain nombre de fichiers. La construction vous dira si vous avez foutu quelque chose jusqu'à présent, ce qui facilitera le retour en arrière et le réparer avant d'avoir fait trop de dégâts.

  • Si les fichiers ne se déplacent pas là où vous le souhaitez - j'ai eu un temps fou à déplacer des fichiers qui avaient été créés au début dans le dossier Classes - vous pouvez simplement les faire glisser hors de leur ancien emplacement dans le Finder pour dans un endroit pratique comme le bureau, supprimez les références à celles-ci dans Xcode, puis réimportez-les via l' option Ajouter des fichiers existants avec le bouton droit / contrôle-clic .

  • Si dans le passé vous avez utilisé Xcode pour supprimer des références à des fichiers sans les déplacer également vers la corbeille de ce projet, vous trouverez des fichiers qui n'ont pas besoin d'être déplacés mais simplement assis là. Veillez à ne pas faire ce que j'ai fait, en confondant les noms d'un groupe de fichiers actuel que je déplaçais et les fichiers plus anciens, non plus liés, en insistant pour que Xcode les importe parce que vous pensiez qu'il était dense.

J'espère que cela aidera une future personne. Je suis surpris que ce soit aussi difficile et parfois compliqué que cela.


2
Avoir tous les fichiers dans le même répertoire me dérangeait vraiment. Merci pour ça!
Curtis Shipley

vous pouvez aussi: réorganiser la structure des répertoires à volonté dans le Finder, supprimer tous les "fichiers rouges" du projet, puis les ajouter tous au projet en utilisant l'option "group in folders"
bshirley

@bshirley Très vrai, et si tous les fichiers du répertoire principal doivent être dans le projet, cela peut faire gagner beaucoup de temps. Malheureusement, avec des projets impliquant plusieurs personnes ou ayant eu beaucoup de versions au fil du temps, il peut y avoir n'importe quel nombre de fichiers qui ne devraient pas être ajoutés au projet. Dans ce cas, vous devrez suivre ceux que vous avez supprimés afin de les restaurer, ou quelque chose de similaire.
Matthew Frederick

11
dans xcode 4, j'ai dû faire quelque chose de différent - je n'ai pas vu de liens contextuels «obtenir des informations» lors d'un clic droit. au lieu de cela, j'ai dû afficher l'identité et le type de vue (probablement un nom pour cela que je ne connais pas). c'est le bouton le plus à droite dans les options d'affichage de la barre d'en-tête xcode4. Je déplace d'abord le fichier sur le système de fichiers, puis clique sur l'icône bizarre à côté du chemin et dis à xcode où se trouve le nouveau fichier.
Evan Pon

6
Le problème avec le déplacement de fichiers est que lorsqu'il est déjà sous contrôle SVN, vous devez vous assurer d'utiliser une application telle que Versions ou Cornerstone pour déplacer les fichiers ... Ou vous vous retrouverez avec de terribles problèmes de contrôle de version! J'aurais aimé qu'Apple jette simplement l'idée des "groupes" et que tout soit dans de vrais dossiers, à la Eclipse ...
jowie

104

Dans Xcode 5 ou Xcode 6:

  1. Créez les dossiers qui correspondent à vos groupes dans le Finder
  2. Déplacez les fichiers dans ces dossiers dans le Finder
  3. Sélectionnez chaque fichier qui est rouge dans la barre latérale Xcode sur la gauche
  4. Cliquez sur le bouton "Afficher / Masquer les utilitaires" pour afficher la barre latérale droite (voir figure)
  5. Dans "Identité et type", cliquez sur le petit bouton et sélectionnez l'emplacement du fichier (voir figure)

entrez la description de l'image ici

À votre santé.


1
Notez à certains utilisateurs, si vous obtenez une erreur indiquant que des modifications ont été apportées après la précompilation des informations d'en-tête, faites simplement un nettoyage du produit et les choses fonctionneront!
quantum

J'ai suivi cette approche dans Xcode 5.1.1 pour déplacer un fichier d'en-tête dans un dossier physique. Je peux déplacer le fichier. Mais Xcode dit "fichier non trouvé" lors de la construction du projet. S'il te plait peux-tu aider.
Rashmi Ranjan mallick

22

J'ai trouvé le moyen le plus fiable de contourner la conception épouvantable de XCode ici est d'organiser TOUS vos fichiers dans Finder, pour deux raisons:

  1. Le Finder ne fait pas "d'erreurs", contrairement à l'interface graphique de XCode
  2. Une fois que les choses sont organisées dans le Finder, vous pouvez faire glisser / déposer des dossiers entiers du Finder dans XCode, et ... il fait exactement ce que vous vouliez, sans effort

Même lors du déplacement de fichiers XCode existants, il est plus rapide de le faire:

  1. Sélectionnez les fichiers dans le Finder
  2. Créer un dossier dans le Finder pour eux
  3. Faites-les glisser / déposez-les dans le dossier (les déplace automatiquement)
  4. Glissez / déposez le dossier Finder dans Xcode (automatiquement: crée le dossier Xcode, ajoute chaque fichier dans le dossier Finder)
  5. cmd-sélectionnez tous les fichiers "rouges" que vous voyez maintenant dans Xcode (parce que vous les avez déplacés) et appuyez sur la touche de suppression

NB: Je n'utilise jamais l'option "créer des dossiers traînés avec des sous-groupes", car dans XCode 3 cela était souvent désespérément bogué et pouvait corrompre les projets. Apple clairement (IMHO) n'utilise PAS cette fonctionnalité en interne, sinon il n'aurait jamais été autorisé à être aussi bogué; si Apple n'utilise rien, il n'est généralement pas sûr de l'utiliser non plus - ils ne sont pas bons pour les tests :)


2
J'essaye ça demain ... c'était la solution simple que je cherchais. Pourquoi ont-ils rendu les choses si difficiles? S'il ne faisait que refléter le système de fichiers, cela aurait été beaucoup moins déroutant. Merci!
delux247

C'était la quatrième solution que j'ai essayée et la SEULE que je pouvais utiliser avec xcode 5.1.1. De plus, pour une raison quelconque, cela ne fonctionnerait pour aucune de mes catégories. J'ai dû les déplacer littéralement vers la corbeille, les retirer de la corbeille, puis les rajouter à xcode et finalement cela a fonctionné.
user3344977

21

Il existe un outil de ligne de commande simple à configurer et à utiliser - «synx» disponible dans github qui fait exactement ce dont vous avez besoin ici.

Il réorganise le dossier du projet Xcode dans le Finder pour qu'il corresponde aux groupes Xcode du projet.

Vous pouvez le trouver ici: https://github.com/venmo/synx

MISE À JOUR: XCode 9 prend en charge cette fonctionnalité par défaut. Donc, plus besoin d'utiliser d'autres outils!


Excellent outil mais devient extrêmement lent dans les grands projets (peut prendre quelques minutes pour terminer le travail) et ne semble plus être pris en charge.
Lukasz

6

Xcode 9

Il semble que Xcode 9 le prenne désormais en charge par défaut. Lorsque vous déplacez des fichiers d'un groupe vers un autre, le fichier sera également déplacé de l'ancien dossier vers le nouveau dossier. Cela a été annoncé lors de la WWDC 2017.



2

Je déplace généralement les fichiers vers le répertoire directement dans le Finder, puis je corrige les fichiers avec des noms de couleur rouge dans XCode dans leur boîte de dialogue "Obtenir des informations": cliquez sur le bouton "Choisir ..." et sélectionnez la nouvelle localisation du fichier. C'est la première réponse lorsque je souhaite déplacer des fichiers dans XCode, et cela fonctionne.


1

À partir de Xcode 4.5, lorsque vous faites glisser dans une structure de dossiers, elle est automatiquement transformée en groupes imbriqués dans le navigateur de projet. Ensuite, si vous regardez sur le disque (par exemple, cliquez avec le bouton droit et choisissez Afficher dans le Finder), la structure des dossiers a été conservée.

J'ai trouvé qu'essayer de réparer des choses à partir d'un projet plus ancien était juste une douleur. Il s'est avéré beaucoup plus facile de simplement supprimer ces fichiers et de les faire glisser à nouveau.


1

Pour déplacer un dossier dans xcode 4.5, je viens de ...

  1. Supprimez les fichiers / groupes de xcode et sélectionnez "Supprimer la référence".
  2. Accédez au Finder et déplacez le dossier / les fichiers selon vos besoins.
  3. Une fois terminé, je retourne dans Xcode et choisis Fichier-> Ajouter des fichiers à {ProjectName}.
  4. Assurez-vous que "Copier les éléments dans le dossier du groupe de destination (si nécessaire)" est coché
  5. Assurez-vous que "Créer un groupe pour tout dossier ajouté" est coché
  6. Assurez-vous que "Ajouter à la cible" est coché pour votre projet

1

Technique la plus simple pour XCode 8 ...

En supposant que vous avez des fichiers A, B, C dans un groupe logique, mais que vous souhaitez les déplacer dans un dossier sur votre disque dur.

  1. Créer un dossier de destination via Finder
  2. Ajoutez le dossier dans XCode (Fichier -> Ajouter des fichiers) à l'aide du volet Options pour sélectionner une référence de dossier (pas un groupe)
  3. Faites glisser les fichiers A, B, C du (ancien) groupe vers la (nouvelle) référence de dossier dans le navigateur de projet. XCode déplacera les fichiers dans le dossier, à la fois dans le projet et sur le disque.

Terminé.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.