Подтвердить что ты не робот

Как вы дублируете файл в XCode?

Кто-нибудь знает хорошее решение?

До сих пор я не нашел лучшего способа, чем использовать File > New file, а затем скопировать содержимое из старого файла в новый.

Возможно, вы можете дублировать в Finder и повторно импортировать, но это почти такой же объем работы: переход на поиск, дублирование, импорт новых файлов.

Выполнение этого с одним классом не так сложно, но что делать, если вам нужно сгенерировать 10+ подобных классов на основе суперкласса.

В Eclipse вы выбираете файл, а затем копируете/вставляете его в ту же папку. В Finder там Duplicate.

Там меню Edit > Duplicate. Но он ВСЕГДА отключен. Я попытался выбрать различные файлы, классы, методы. Он по-прежнему отключен.

4b9b3361

Ответ 1

"Duplicate" включен для целей в XCode (почти ничего, что я знаю).

Если у вас есть значительное количество подклассов с одинаковой начальной точкой для репликации, почему бы не сделать из него шаблон шаблона? Затем вы можете просто использовать file- > New для создания новых экземпляров. Это довольно быстро сделать.

Это, наверное, самый простой пример:

http://www.macresearch.org/custom_xcode_templates

В противном случае я бы просто дублировал файлы в Finder столько раз, сколько вам нужно, назовите их и перетащите их в XCode en-masse.

Ответ 2

В XCode 4.2 (я знаю, что это старый вопрос) в меню "Файл" есть Duplicate.

Выберите файл (вы можете выбрать несколько файлов, но он ничего не может сделать полезным) в Навигаторе проектов, а затем File- > Duplicate. Ура!

Ответ 3

В Xcode 4.5 мы можем дублировать, используя File- > Duplicate или cmd + shift + S

Ответ 4

Вы можете использовать "Сохранить как..."; вам все равно придется вернуться и снова добавить исходные файлы в проект.

Не было бы такого плохого способа сделать кучу связанных классов, хотя: редактировать файл, Сохранить как "класс2", редактировать файл, Сохранить как "класс3" и т.д., затем "Добавить существующие файлы" и повторно добавьте все файлы, но последний в ваш проект.

Ответ 5

Я использую следующий perl script для дублирования пары файлов в терминале. Вы даете ему базовое имя оригинального и нового файла и копирует файл заголовка и реализации (c/cpp/m/mm), затем заменяет все события базового имени новым именем, а затем добавляет их в подрывную. Вам все равно придется добавлять новые файлы в Xcode и корректировать дату создания в комментарии (у меня есть макрос Maestro для клавиатуры), но это быстрее, чем делать много шагов вручную. Я работаю с окном терминала и четырьмя вкладками, предварительно установленными в каталог Project, Source, Resources и English.lproj, который дает быстрый доступ для большого количества операций.

#!/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" );
}

Ответ 6

Осторожно! Когда вы используете duplicate (CMD + Shift + S), у Xcode возникают проблемы с заголовками индексирования. Также, когда вы хотите сделать рефакторинг, это может быть следующее окно ошибки:

Не является частью фазы сборки любых целей в проектах Xcode 3 в этой рабочей области и поэтому нельзя реорганизовать

Итак, есть несколько способов сделать, чтобы исправить это.

  • Удалить derived data из меню Window > Projects. Перезапустите Xcode.
  • Продукт > Очистка