你如何在XCode中复制文件?

时间:2009-07-07 16:10:11

标签: objective-c iphone

任何人都知道一个好的解决方案吗?

到目前为止,我还没有找到比使用File>新文件然后将内容从旧文件复制到新文件更好的方法。

您可以在Finder中复制并重新导入,但这几乎是相同的工作量:切换到查找程序,复制,导入新文件。

对一个类执行此操作并不是那么困难,但如果需要基于超类生成10个以上类似的类,该怎么办。

在Eclipse中,选择文件,然后将其复制/粘贴到同一文件夹中。在finder中有重复。

有一个菜单编辑>重复。但它总是被禁用。我尝试选择各种文件,类,方法。它仍然被禁用。

7 个答案:

答案 0 :(得分:58)

在XCode 4.2中(我知道这是一个老问题),文件菜单下有Duplicate。

在Project Navigator中选择文件(您可以选择多个文件,但似乎没有任何用处),然后选择File-> Duplicate。万岁!

答案 1 :(得分:7)

在Xcode 4.5中,我们可以使用File->进行复制。重复或cmd + shift + S

答案 2 :(得分:5)

XCode中的目标启用了“Duplicate”(几乎没有其他我知道的)。

如果您有大量具有相同起点的子类进行复制,为什么不从中创建一个类模板?然后你可以使用file-> New来创建新实例。这样做很快。

这可能是最简单的例子:

http://www.macresearch.org/custom_xcode_templates

否则,我只需要在Finder中复制文件多次,命名它们,然后将它们拖入XCode集体中。

答案 3 :(得分:1)

您可以使用“另存为...”;但是,您仍然需要返回并将原始文件重新添加到项目中。

但是,做一堆相关的课程并不是一个糟糕的方法:编辑文件,另存为“class2”,编辑文件,另存为“class3”等,然后“添加现有文件”和重新添加所有文件,但最后一个文件添加到项目中。

答案 4 :(得分:1)

我使用以下perl脚本在终端中复制文件对。您为它提供原始文件和新文件的基本名称,并复制标题和实现(c / cpp / m / mm)文件,然后用新名称替换基本名称的所有出现,然后将它们添加到subversion。您仍然需要将新文件添加到Xcode中并在注释中调整创建日期(我已经有了一个Keyboard 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" );
}

答案 5 :(得分:0)

小心! 当您使用derived data(CMD + Shift + S)时 - Xcode在索引标题时出现问题。 此外,当你想进行重构时,它可以是下一个错误窗口:

Is not part of the build phase of any targets in the Xcode 3 projects in this workspace and so can't be refactored

所以有几种方法可以解决这个问题。

  1. 从菜单Window > Projects中删除<picture> <img sizes="(max-width: 1920px) 100vw, 1920px" srcset=" footer_rainbow_fjrr5j_c_scale,w_190.png 190w, footer_rainbow_fjrr5j_c_scale,w_780.png 780w, footer_rainbow_fjrr5j_c_scale,w_1190.png 1190w, footer_rainbow_fjrr5j_c_scale,w_1920.png 1920w" src="footer_rainbow_fjrr5j_c_scale,w_1920.png" alt=""> </picture> 。重启Xcode。
  2. 产品&gt;清洁

答案 6 :(得分:0)

以我为例,我的一个文件夹从一个位置更改为另一个位置。

我在 Controller 文件夹中有“ Home ”文件夹,但不幸的是,它已从 Controller 文件夹移至 Manager 文件夹。

我检查了很多次都没事,但是我得到了Command PrecompileSwiftBridgingHeader failed with a nonzero exit code

但是我意识到2小时后,我的文件夹结构发生了变化。