web-dev-qa-db-fra.com

Flux de travail pour créer des groupes Xcode en tant que dossiers du système de fichiers

J'aime organiser mes cours en groupes, dans le volet de navigation du projet Xcode 4. J'utilise également le versioning GIT via le terminal, ce qui fonctionne mieux pour moi que l'intégration Xcode 4. Pour moi, cela a le plus de sens lorsque les groupes que je crée dans Xcode correspondent à de vrais dossiers sur mon système de fichiers.

Cependant, Xcode semble ne pas se soucier de l'emplacement d'un fichier (par exemple, le fichier Objective-C .h/.m) sur le système de fichiers, et chaque fois que vous ajoutez un groupe (Option+Command+N) c'est purement cosmétique, car tous les fichiers que vous y insérerez partageront le même emplacement sur votre disque dur que les autres.

La chose étrange est que si vous créez d'abord un dossier sur votre disque dur, puis le faites glisser vers Xcode, vous avez créé un groupe avec son propre emplacement sur votre système de fichiers. Chaque fichier que vous créez sera créé dans le dossier sur le disque. J'adore ça, mais j'adorerais encore plus si Xcode faisait ça pour moi à Option+Command+N. Le flux de travail consistant à basculer vers le Finder pour chaque groupe que vous souhaitez créer, puis à le faire glisser au bon endroit dans le navigateur de votre projet est tout simplement stupide.

Cela ressemble à quelque chose qu'un paramètre réglerait, mais je ne le trouve pas! Y a-t-il une meilleure façon?

Mise à jour: Lorsque vous faites glisser un dossier vers Xcode, vous obtiendrez une fenêtre de dialogue où vous pourrez choisir "Référence de dossier". Cela semble prometteur, mais mon Xcode 4 n'accepte pas les fichiers qui s'y trouvent en tant que classes et continue de me dire qu'il ne trouve aucun fichier. Peut-être que la réponse se trouve ici quelque part, mais je ne la trouve toujours pas.

ne autre mise à jour: J'ai changé mon environnement d'éditeur principal de Xcode à AppCode. Ce dernier prend en charge la création de dossiers pour sauvegarder les groupes de projets, tout en conservant une compatibilité à 100% avec Xcode. Ces gars AppCode savent vraiment ce qu'ils font.

62
epologee

MISE À JOUR

Ce qui suit décrit Xcode 9 et versions ultérieures.

À partir de Xcode 9, Xcode peut créer automatiquement un dossier de système de fichiers lorsque vous créez un groupe dans votre projet.

Lorsque vous cliquez avec le bouton droit (ou contrôle-cliquez) dans le navigateur de projet, le menu contextuel comprend un élément de menu "Nouveau groupe" et soit un " Élément de menu Nouveau groupe avec dossier ou un élément de menu "Nouveau groupe sans dossier".

  • Si Xcode propose "Nouveau groupe" et "Nouveau groupe avec dossier", alors "Nouveau groupe" crée un groupe sans dossier.

  • Si Xcode propose "Nouveau groupe" et "Nouveau groupe sans dossier", alors "Nouveau groupe" crée un groupe avec un dossier.

En d'autres termes, "Nouveau groupe" fait toujours l'opposé de l'autre élément de menu (explicite), en ce qui concerne la création de dossiers.

Si vous renommez un groupe et que ce groupe a un dossier correspondant du même nom, Xcode 9 renomme également le dossier.

Dans Xcode 9, si vous faites glisser un fichier d'un groupe vers un autre et que les groupes ont des dossiers différents, Xcode 9 déplace le fichier vers le dossier du nouveau groupe, que le dossier du nouveau groupe porte le même nom que le groupe.

Si vous ne souhaitez pas ce comportement dans Xcode 9, vous pouvez définir un paramètre non documenté à partir de la ligne de commande:

defaults write com.Apple.dt.Xcode IDEDisableStructureEditingCoordinator -bool YES

Impossible de déduire des détails sur "Nouveau groupe avec dossier" et "Nouveau groupe sans dossier"

Il n'est pas du tout évident comment Xcode décide d'afficher "Nouveau groupe" et "Nouveau groupe avec dossier", ou "Nouveau groupe" et "Nouveau groupe sans dossier". Un Apple à la WWDC 2018 (je pense que son nom était Paul) a regardé le code source Xcode et m'a expliqué:

  • Xcode détermine le groupe sur lequel vous avez cliqué (ou, si vous n'avez pas cliqué sur un groupe, il détermine quel groupe contient l'élément sur lequel vous avez cliqué).
  • Xcode examine les sous-groupes (et les dossiers liés) qui sont des enfants du groupe cliqué.
  • Si la majorité des sous-groupes ont leurs propres dossiers, alors Xcode suppose que vous voulez que le nouveau groupe ait également son propre dossier. Ainsi, Xcode affiche "Nouveau groupe" (qui créera un dossier) et "Nouveau groupe sans dossier".
  • Si la majorité des sous-groupes n'ont pas leurs propres dossiers, alors Xcode suppose que vous voulez que le nouveau groupe aussi pas avoir son propre dossier. Ainsi, Xcode affiche "Nouveau groupe" (qui ne créera pas un dossier) et "Nouveau groupe avec dossier".
  • Je ne sais pas comment Xcode brise le lien si exactement la moitié des sous-groupes ont leurs propres dossiers, et je n'ai pas envie de le tester en ce moment…
  • Si le groupe cliqué n'a pas de sous-groupes, Xcode décide quoi afficher en fonction du fait que le groupe cliqué possède lui-même son propre dossier.

Fondamentalement, Xcode essaie de deviner si votre nouveau groupe devrait avoir son propre dossier en fonction de si ses futurs frères et sœurs ont leurs propres dossiers.

ORIGINAL

Vous pouvez créer un nouveau groupe, avec son propre dossier, directement dans Xcode, mais ce n'est pas du tout évident.

Au lieu de choisir "Nouveau groupe", choisissez "Ajouter des fichiers à" <Projet> "". Ensuite, dans la boîte de dialogue du sélecteur de fichiers, cliquez sur le bouton Nouveau dossier ou appuyez sur Commande + Maj + N et tapez le nom du nouveau dossier/groupe. Ensuite, assurez-vous que "Créer des groupes pour tous les dossiers ajoutés" est choisi et cliquez sur Ajouter ou appuyez sur Retour.

adding a group with its own folder

Cela ne vous fait pas beaucoup d'économies si vous devez déplacer des fichiers existants dans le nouveau groupe, car Xcode ne le fera toujours pas.

Mais cela enregistre quelques étapes si vous créez un nouveau groupe pour contenir de nouveaux fichiers.

125
rob mayoff

Pour ceux qui sont trop paresseux pour synchroniser les dossiers, il y a un outil sympa sur GitHub .

Synx est un outil en ligne de commande qui réorganise votre dossier de projet Xcode pour qu'il corresponde à vos groupes Xcode.

enter image description here

J'espère que cela aide quelqu'un

37
E-Riddie

Jetez un œil à la réponse d'Andyvn22 ici

Paraphraser:

  • Xcode 3 : Chaque fois que vous créez un groupe dans Xcode, obtenez immédiatement des informations à ce sujet et notez le paramètre "Path:" juste en dessous de son nom. Cliquez sur "Choisir ..." et définissez-le dans un nouveau dossier du même nom.
  • Xcode 4 : chaque fois que vous créez un groupe dans Xcode, sélectionnez-le immédiatement et ouvrez la barre latérale droite. Notez le paramètre "Path:" juste en dessous de son nom. Cliquez sur l'icône à côté de "Aucun" (qu'est-ce qu'un fichier dans une fenêtre?) Et placez-le dans un nouveau dossier du même nom.

Ensuite, vous devrez déplacer manuellement tous les fichiers existants sur le disque vers le nouveau dossier.

Je viens d'essayer cela dans mon projet Xcode4, cela fonctionne comme un charme.

5