任何人都知道一个好的解决方案吗?
到目前为止,我还没有找到比使用File>新文件然后将内容从旧文件复制到新文件更好的方法。
您可以在Finder中复制并重新导入,但这几乎是相同的工作量:切换到查找程序,复制,导入新文件。
对一个类执行此操作并不是那么困难,但如果需要基于超类生成10个以上类似的类,该怎么办。
在Eclipse中,选择文件,然后将其复制/粘贴到同一文件夹中。在finder中有重复。
有一个菜单编辑>重复。但它总是被禁用。我尝试选择各种文件,类,方法。它仍然被禁用。
答案 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在索引标题时出现问题。
此外,当你想进行重构时,它可以是下一个错误窗口:
所以有几种方法可以解决这个问题。
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。答案 6 :(得分:0)
以我为例,我的一个文件夹从一个位置更改为另一个位置。
我在 Controller 文件夹中有“ Home ”文件夹,但不幸的是,它已从 Controller 文件夹移至 Manager 文件夹。
我检查了很多次都没事,但是我得到了Command PrecompileSwiftBridgingHeader failed with a nonzero exit code
但是我意识到2小时后,我的文件夹结构发生了变化。