重命名或重构Xcode中的文件


Answers:


169

重命名文件的最安全方法是使用Xcode的“ Refactor”命令来重构类名。使用该命令可确保在引用文件或类的任何位置(包括NIB)也更新了代码。

右键单击界面(.h)文件中的类名称,选择Refactor->Rename,然后Xcode将指导您完成该过程,从而允许您在提交更改之前预览更改。

更多细节:

右键单击类名(在之后@interface),然后选择Refactor-> Rename。例如,右键单击ViewController以下代码:

@interface ViewController : UIViewController

在此处输入图片说明

输入课程的新名称:

在此处输入图片说明

Xcode将允许您在提交之前查看更改。

在此处输入图片说明

您还可以突出显示类名称并使用Xcode的Edit->Refactor菜单,或者根据需要甚至将其映射到键盘快捷键。

如果您实际上想重命名文件而不影响任何代码,请单击“导航器”窗格(左窗格)中的名称,稍等片刻,然后再次单击。该名称将突出显示,您可以输入一个新名称。您也可以从导航器中删除,在Finder中重命名文件,然后将其重新添加到项目中。


1
这种方法是最好的,因为它将重命名保存在其他文件或XIB文件中的类实例。
Kendall Helmstetter Gelner 2010年

自从我升级到4.3后,这似乎不起作用。在标头(.h)文件中,XCode抱怨该文件未添加到目标-不应将其添加到目标,因为它是标头文件。如果您尝试.m文件,它会抱怨它不是符号(类,函数等)
Michael

@Michael您是否在测试项目上尝试过?我尚未安装4.3,但在4.2上似乎可以正常使用(只是尝试了一下)。

如果是开源的,有人知道在哪里可以找到相关的源代码?我认为他们使用clang工具来实现重构功能,这种功能有一些不错的接口,但是我还没有找到源代码。
BergP 2014年

不幸的是,这使我的Xcode崩溃了。我正在运行Yosemite Beta,所以这可能是原因。希望。
CGTheLegend 2014年

51

适用于Xcode 4.2.1:在项目导航器中选择文件(默认左侧面板),然后按[tab]


谢谢。重构->重命名不适用于C ++文件。这工作了。
BlueVoid13年

4
我认为这个答案比当前答案更值得接受。+1
摩根·王尔德

也可以与XCode 11一起使用
Kesha Antonov

3

默认情况下,当您在文件导航器中(左轮廓视图)重命名文件或使用检查器时,Xcode将重命名文件。


嗨,我想用ToolBarDelegate.h重命名协议(SideToolBarDelegate.h),但是xcode对我说:“ SideToolBarDelegate.h导入或包含在Objective-C ++而不是Objective-C或C的文件中:” 。我该如何重命名?谢谢
samir 2013年

它只是将其替换为一个文件(SideToolBarDelegate.h),但我想在所有项目中替换此名称,例如重构功能。
萨米尔2013年

shift-cmd-F,弹出小选项以“查找并替换”。查找并替换...
bbum

不要忘记使用相关名称重命名事物:Body,BodiesViewController,interactiveingBodies –严格的“查找并替换”功能不会捕获第二或第三名。
willc2

2

一种方法:选择要重命名的文件,然后按Tab。我主要使用它,但是Xcode有时无法重命名。所以我要的是

另一种方式:选择文件。打开“检查员区域”(位于右上角)。然后打开File Inspector。在这里,您可以找到名称字段,您可以在其中编辑文件的名称。(请参见屏幕截图)。

在此处输入图片说明


1

Xcode 11.6尝试将“ foo.cpp”重命名为“ bar.cpp”无法使用上述方法。REFACTOR选项显示为灰色。而是,请执行以下操作:

  • 在项目浏览器中,找到要重命名的文件,即:foo.cpp
  • 右键(2finger)点击foo.cpp
  • 选择“在文件检查器中显示”

在屏幕的右侧,出现文件检查器。

  • 在“名称”字段中,键入新文件名,然后按Enter。

0

如果您手动重命名了文件,并使用“查找和替换”重命名了类名,请确保在目标的“构建阶段”中将文件添加到“编译源”中,因为该文件可能会被删除。


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.