47 votes

Comment dupliquez-vous un fichier dans XCode?

Quelqu'un connais une bonne solution?

Jusqu'à présent, je n'ai pas trouvé de meilleur moyen que d'utiliser fichier>Nouveau Fichier et copie le contenu de l'ancien fichier de nouveau.

Vous pouvez probablement en double dans le Finder et ré-importer, mais c'est presque la même quantité de travail: le passage du finder, double, importer de nouveaux fichiers.

De le faire avec une classe n'est pas si dur, mais que faire si vous avez besoin de générer 10+ similaire Classes sur la base de la superclasse.

Dans Eclipse, vous sélectionnez le fichier, puis de le copier/coller dans le même dossier. Dans le finder il y a Doublon.

Il y a un menu Édition > Dupliquer. Mais c'est TOUJOURS désactivé. J'ai essayé de sélectionner des fichiers différents, des classes, des méthodes. C'est toujours désactivé.

70voto

WiseOldDuck Points 1646

Dans XCode 4.2 (je sais que c'est une vieille question), il y a Duplicate dans le menu File.

Sélectionnez le fichier (vous pouvez sélectionner plusieurs fichiers mais il ne semble rien faire d'utile) dans le Navigateur du projet, puis Fichier-> Dupliquer. Hourra!

16voto

shinto Joseph Points 541

Dans Xcode 4.5, nous pouvons dupliquer en utilisant File-> Duplicate ou cmd + shift + S

7voto

"Doublon" est activée pour les cibles dans XCode (presque rien d'autre que je connais).

Si vous avez un grand nombre de sous-classes avec le même point de départ à reproduire, pourquoi ne pas faire un modèle de classe à partir d'elle? Ensuite, vous pouvez simplement utiliser la commande fichier->Nouveau pour faire de nouvelles instances. Il est assez rapide à faire.

C'est probablement l'exemple le plus simple:

http://www.macresearch.org/custom_xcode_templates

Sinon, je serais tout simplement de dupliquer les fichiers dans le Finder autant de fois que vous avez besoin, de les nommer et de les faire glisser dans XCode en masse.

1voto

David Maymudes Points 5153

Vous pouvez utiliser "Enregistrer sous ..."; vous devrez cependant revenir en arrière et rajouter les fichiers d'origine au projet.

Ce ne serait pas une si mauvaise façon de faire un tas de classes liées, cependant: modifier le fichier, enregistrer sous "classe2", modifier le fichier, enregistrer sous "classe3", etc., puis "ajouter des fichiers existants" et rajouter tous les fichiers, mais le dernier de votre projet.

1voto

Peter N Lewis Points 12025

J'ai utiliser le script perl suivant pour dupliquer une paire de fichier dans le Terminal. Vous lui donnez le nom de base de l'original et de nouveau fichier, et la copie de l'en-tête et de mise en œuvre (c/cpp/m/mm) fichier, remplace alors tous les événements de la base de nom avec le nouveau nom, puis les ajoute à la subversion. Vous avez encore d'ajouter les nouveaux fichiers dans Xcode et d'ajuster la date de création dans le commentaire (j'ai un Clavier Maestro macro pour ça), mais son plus rapide que de faire beaucoup d'étapes à la main. Je fonctionne avec une fenêtre de Terminal et quatre onglets pré-défini pour le Projet, la Source, les Ressources, et en anglais.lproj répertoire qui donne un accès rapide pour beaucoup d'opérations.

#!/usr/bin/perl

use lib "$ENV{HOME}/perl";
use warnings;
use strict;

our $cp = '/bin/cp';
our $svn = '/usr/bin/svn';
our $perl = '/usr/bin/perl';

our $source = shift;
our $add = 1;
if ( $source =~ m!^-! ) {
    if ( $source eq '-a' || $source eq '--add' ) {
    	$add = 1;
    	$source = shift;
    } elsif ( $source eq '-A' || $source eq '--noadd' ) {
    	$add = undef;
    	$source = shift;
    } else {
    	die "Bad arg $source";
    }
}
our $dest = shift;

die "Bad source $source" unless $source =~ m!^(.*/)?[A-Za-z0-9]+$!;
die "Bad dest $dest" unless $dest =~ m!^(.*/)?[A-Za-z0-9]+$!;
my $cpp;
$cpp = 'c' if ( -e "$source.c" );
$cpp = 'cpp' if ( -e "$source.cpp" );
$cpp = 'mm' if ( -e "$source.mm" );
$cpp = 'm' if ( -e "$source.m" );
die "Missing source $source" unless -e "$source.h" && -e "$source.$cpp";
die "Existing dest $dest" if -e "$dest.h" && -e "$dest.$cpp";

our $sourcename = $source; $sourcename =~ s!.*/!!;
our $destname = $dest; $destname =~ s!.*/!!;

print "cp $source.h $dest.h\n";
system( $cp, "$source.h", "$dest.h" );
print "s/$sourcename/$destname in $dest.h\n";
system( $perl, '-p', '-i', '-e', "s/$sourcename/$destname/g", "$dest.h" );

print "cp $source.$cpp $dest.$cpp\n";
system( $cp, "$source.$cpp", "$dest.$cpp" );
print "s/$sourcename/$destname in $dest.$cpp\n";
system( $perl, '-p', '-i', '-e', "s/$sourcename/$destname/g", "$dest.$cpp" );

if ( $add ) {
    print "svn add $dest.$cpp $dest.h\n";
    system( $svn, 'add', "$dest.$cpp", "$dest.h" );
}

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