40media How do you duplicate a file in XCode?

How do you duplicate a file in XCode?

Anyone know a good solution?

So far I have not found a better way than using File>New file and then copying contents from old file to new.

You can probably duplicate in Finder and re-import but that's almost same amount of work: switching to finder, duplicate, import new files.

Doing this with one class is not so hard, but what to do if you need to generate 10+ similar Classes based on superclass.

In Eclipse you select file and then copy/paste it in same folder. In finder there's Duplicate.

There's a menu Edit > Duplicate. But it's ALWAYS disabled. I tried selecting various files, classes, methods. It's still disabled.

How do I call an array value and use it to play a sound file?


Property attribute “retain” doesn't seem to be working?
"Duplicate" is enabled for targets in XCode (pretty much nothing else that I know of)..
How to set up single array or dictionary for use in multiple datasources?
If you have a substantial number of subclasses with the same starting point to replicate, why not make a class template from it? Then you can just use file->New to make new instances.

Memory management and performSelectorInBackground:
It's fairly quick to do..
tableView footer strange behavior
This is probably the simplest example:.
Truly modal UIAlertView in iPhone?
MVC and the communication between them. What did i miss?
Otherwise, I'd simply duplicate the files in Finder as many times as you need, name them, and drag them into XCode en-masse..
Accessing GPS on Blackberry using Javascript and sending lat/long values to a server via url


In XCode 4.2 (I know this is an old question) there is Duplicate under the File menu.. Select the file (you can select multiple files but it doesn't appear to do anything useful) in the Project Navigator and then File->Duplicate.



In Xcode 4.5 we can duplicate using File-> Duplicate or cmd + shift + S.


You could use "Save As..."; you'd still have to go back and re-add the original files to the project, though.. It wouldn't be such a bad way to do a bunch of related classes, though: edit file, Save As "class2", edit file, Save As "class3", etc., then "Add Existing Files" and re-add all of the files but the last to your project..


I use the following perl script to duplicate a file pair in the Terminal.

You give it the base name of the original and new file, and it copies the header and implementation (c/cpp/m/mm) file, then replaces all occurances of the base name with the new name, then adds them to subversion.

You still have to add the new files in to Xcode and adjust the creation date in the comment (I've got a Keyboard Maestro macro for that), but its quicker than doing a lot of the steps manually.

I operate with a Terminal window and four tabs pre-set to the Project, Source, Resources, and English.lproj directory which gives quick access for a lot of operations..
#!/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" ); } 


Careful! When you use duplicate ( CMD + Shift + S ) - Xcode have a problem with indexing headers.

Also when u want to make a refactoring it can be next error window:. Is not part of the build phase of any targets in the Xcode 3 projects in this workspace and so can't be refactored. So there a couple of ways what to do, to fix that..
  1. Delete derived data from menu Window > Projects.

    Restart Xcode.
  2. Product > Clean

94 out of 100 based on 54 user ratings 754 reviews