在Xcode中重命名或重构文件

90

是否可以重命名/重构一个类文件并让它在磁盘上实际地改名?如果可以,我应该如何做到这一点?

7个回答

180

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

在接口(.h)文件中,右键单击类名,选择“重构-重命名”,然后Xcode将指导您完成此过程,允许您在提交更改之前预览它们。

更多详细信息:

在这段代码中,在@interface后面右键单击类名(例如ViewController),然后选择Refactor->Rename。

@interface ViewController : UIViewController

在这里输入图像描述

输入类的新名称:

在这里输入图像描述

Xcode会让你在提交前查看更改。

在这里输入图像描述

你也可以突出显示类名并使用Xcode的编辑->重构菜单,或者如果需要的话将其映射到键盘快捷方式。

如果您实际上想要重命名文件而不影响任何代码,请点击导航器窗格(左窗格)中的名称,等待一秒钟,然后再次单击。名称将被突出显示,您可以输入新名称。您还可以从导航器中删除,将文件重命名为Finder中的名称,然后重新添加到项目中。


1
这种方法是最好的,因为它可以重命名在其他文件或XIB文件中保存的类实例。 - Kendall Helmstetter Gelner
不幸的是,这使我的Xcode崩溃了。我正在运行Yosemite Beta,所以可能是原因。希望如此。 - CGTheLegend
至少在Xcode 7.2.1和Objective-C类中,您只需要执行重构操作,而不需要在项目导航器中重命名文件。 - Pierre Mardon
[iSarcasm]我喜欢Xcode 9几乎以相同的方式工作,但却省略了让我出现重命名对话框的步骤,使我陷入了一个令人兴奋的难题游戏,试图弄清如何使用界面来重命名事物。[/iSarcasm] - Dronz
点击导航窗格(左窗格)中的名称,等待一秒钟,然后再次单击。我真的无法让它起作用。我花了10分钟尝试重命名一个该死的文件。 - ScottyBlades
显示剩余4条评论

71

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


谢谢。重构->重命名在C++文件中无法工作。这个方法有效。 - BlueVoid
6
我认为这个答案更值得被采纳,胜过目前的答案。+1 - Morgan Wilde
1
也适用于XCode 11。 - Kesha Antonov
这允许文件被重命名,但它并没有考虑到代码或文件中对旧名称的引用。 - ILMostro_7

5
一种方法: 选择要重命名的文件,然后按Tab键。我大多数情况下都使用这种方法,但是有时Xcode无法重命名它。所以我会做以下操作:

另一种方法: 选择文件。打开检查器区域(位于右上角)。然后打开文件检查器。在那里你会找到名称字段,可以编辑文件名字。(见截图)。

enter image description here


4

默认情况下,当您在文件导航器(左侧大纲视图)或使用检查器重命名文件时,Xcode会自动重命名文件。


你好,我想将一个协议(SideToolBarDelegate.h)重命名为ToolBarDelegate.h,但是Xcode告诉我:“SideToolBarDelegate.h被一个Objective-C++文件导入或包含,而不是Objective-C或C文件:”。请问我该如何重命名它?谢谢。 - samir
它只是替换了一个文件(SideToolBarDelegate.h)中的名称,但我想在整个项目中替换此名称,就像重构功能一样。 - samir
shift-cmd-F,弹出小选项,找到"查找和替换"。查找并替换... - bbum
不要忘记使用相关名称重命名事物:Body、BodiesViewController、interactingBodies - 严格的“查找和替换”无法捕获第二或第三个。 - willc2

1

Xcode 11.6中尝试使用上述方法将"foo.cpp"重命名为"bar.cpp"无法工作。重构选项被禁用。请按照以下步骤操作:

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

屏幕右侧会出现文件检查器。

  • 在名称字段中输入新的文件名,按ENTER键

0

选择重构->重命名 nevan king的答案在Xcode版本7.0 beta (7A120f)上也可以正常工作。


这并没有提供问题的答案。如果要批评或请求作者澄清,请在他们的帖子下留言 - 您始终可以在自己的帖子上发表评论,并且一旦您拥有足够的声望,您将能够评论任何帖子 - Mayank Jain
因为我没有50个声望值,所以我不能在回复中发布答案。 - Carlos Chang

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接