45 votes

Un moyen d'organiser automatiquement les #imports dans Xcode

J'adore la commande "Organiser les imports" dans Eclipse pour ajouter et supprimer implicitement les classes importées dans un fichier source (comme en Java ou ActionScript).

Y a-t-il une commande dans Xcode pour mettre à jour les directives #import en haut des fichiers Objective-C en fonction des classes référencées dans le fichier ?

0 votes

Comment cela pourrait-il fonctionner avec des fichiers qui déclarent plusieurs classes?

0 votes

Je veux que le fichier d'en-tête contenant la déclaration de classe correspondante soit importé - ce que je dois faire manuellement maintenant.

0 votes

Si Xcode savait magiquement où ces classes ont été déclarées, vous n'auriez jamais besoin d'importer quoi que ce soit.

76voto

Tim Büthe Points 21527

Vous pouvez le faire en créant une action Automator et en l'utilisant dans Xcode ainsi que partout dans Mac OS X. Pour ce faire, suivez les étapes suivantes :

  1. Démarrer Automator -> Nouveau
  2. Choisir "Action rapide" (ou "Service" sur les anciennes versions de MacOS/Automator)
  3. Ajouter une action "exécuter le script shell"
  4. Utiliser sort | uniq comme script et cocher la case "remplacer le texte sélectionné par la sortie"
  5. Enregistrer et donner un nom (par exemple "trier et supprimer les doublons")
  6. Vérifier "La sortie remplace le texte sélectionné"

Après l'avoir enregistré, vous pouvez simplement sélectionner vos importations dans Xcode, cliquer avec le bouton droit de la souris et choisir votre action "trier et supprimer les doublons" pour organiser vos importations.

Ce n'est pas aussi bon que les actions d'organisation des importations dans Eclipse ou IntelliJ, car cela ne supprime pas les éléments inutilisés, mais c'est mieux que rien.

PS : Trouvé lors des sessions WWDC 2012 - Session 402 Working Efficiently with Xcode (à partir de 6h15)

ÉDIT

J'ai commencé à utiliser AppCode, l'IDE Objective-C de JetBrains, et il a des fonctionnalités comme "organiser les importations". Vous devriez y jeter un coup d'œil : http://www.jetbrains.com/objc/.

2 votes

Dans Automator, n'oubliez pas de cocher "La sortie remplace le texte sélectionné".

2 votes

Ne peut pas donner une solution à la question, mais élimine tout de même beaucoup de tâches pénibles.

2 votes

Si vous souhaitez rendre le tri insensible à la casse, utilisez sort -f | uniq

3voto

Arrel Points 2158

Je résous cela comme n'étant pas actuellement une fonctionnalité de Xcode :(

8 votes

Donc 2011 a vu l'aube d'un nouveau Xcode, version 4. Toujours pas de fonction "organiser les imports". Attristant... Je garderai un œil sur cette question en espérant que quelqu'un trouvera un jour une solution.

0 votes

Ouais, même si la solution de Tim vaut toujours la peine je pense parce qu'elle élimine déjà beaucoup de travail fastidieux.

0 votes

@Arrel Je pense que vous devriez marquer la réponse de Tim comme acceptée. Puisque vous avez demandé COMMENT et il vous a montré la voie

3voto

jstewart379 Points 61

J'ai trouvé que Cedar Shortcuts était au moins utilisable. Ce n'est pas aussi bon que la fonction d'importation d'Eclipse (il n'organise pas les imports), mais cela peut vous éviter d'avoir à aller en haut d'un fichier de classe et taper une déclaration d'importation. Avec ce plugin, vous placez simplement le curseur sur la classe à importer et appuyez sur Ctrl + Option + I. Voici le projet github. https://github.com/cppforlife/CedarShortcuts

1voto

Tim Büthe Points 21527

AppCode de Jetbrains peut le faire.

0voto

Rajive Jain Points 336

Oui. Comme dans Eclipse, ce serait une fonctionnalité géniale car développer dans XCode (Cocoa Touch) nécessite pas mal d'imports de classes qui ne sont pas faciles à retenir et le développement Android dans Eclipse résout cela avec une simple combinaison de touches qui permet d'économiser tellement de temps! J'espère qu'il y aura bientôt un moyen de le faire dans XCode!

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X