在 Xcode 中重命名或重构文件

Posted

技术标签:

【中文标题】在 Xcode 中重命名或重构文件【英文标题】:Rename or refactor files in Xcode 【发布时间】:2011-03-05 05:10:39 【问题描述】:

是否可以重命名/重构类文件并让它重命名磁盘上的实际文件?如果是这样,我该怎么做?

【问题讨论】:

【参考方案1】:

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

右键单击接口 (.h) 文件中的类名,选择Refactor->Rename,Xcode 将引导您完成整个过程,允许您在提交更改之前预览更改。

更多详情:

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

@interface ViewController : UIViewController

输入班级的新名称:

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

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

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

【讨论】:

这种方法最好,因为它会重命名保存在其他文件或 XIB 文件中的类实例。 这似乎不起作用,因为我已经升级到 4.3。在标头 (.h) 文件中,XCode 抱怨该文件未添加到目标中 - 它不应该添加到目标中,因为它是头文件。如果你在 .m 文件中尝试,它会抱怨它不是符号(类、函数等) @Michael 你在测试项目上试过了吗?我还没有安装 4.3,但它似乎在 4.2 上运行良好(刚刚尝试过)。 有谁知道我在哪里可以找到相关的源代码,如果它是开源的?我认为他们使用 clang 工具来实现重构功能,这些功能有一些很好的接口,但我还没有找到源代码。 不幸的是,这让我的 Xcode 崩溃了。我正在运行 Yosemite Beta,所以这可能是原因。希望。【参考方案2】:

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

【讨论】:

谢谢。 Refactor->Rename 不适用于 C++ 文件。这行得通。 我认为这个答案比目前的答案更值得被接受。 +1 也适用于 XCode 11【参考方案3】:

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

【讨论】:

嗨,我想用 ToolBarDelegate.h 重命名协议 (SideToolBarDelegate.h),但 xcode 对我说:“SideToolBarDelegate.h 被导入或包含在 Objective-C++ 文件中,不是 Objective-C 或 C:"。请问我如何重命名它?谢谢 它只是在一个文件中替换它(SideToolBarDelegate.h),但我想在所有项目中替换这个名称,就像重构函数一样。 shift-cmd-F,弹出“查找和替换”的小选项。查找和替换... 不要忘记用相关名称重命名事物:Body、BodiesViewController、interactingBodies——严格的“查找和替换”不会捕捉到第二个或第三个。【参考方案4】:

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

另一种方式:选择文件。打开 Inspectors Area(在右上角)。然后打开文件检查器。在那里您会找到名称字段,您可以在其中编辑文件的名称。 (见截图)。

【讨论】:

【参考方案5】:

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

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

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

在名称字段中,输入您的新文件名,然后按 ENTER

【讨论】:

【参考方案6】:

如果您手动重命名文件,并使用 Find and Replace 重命名类名,请确保该文件已添加到目标的 Build Phases 中的 Compile Sources,因为它可能会被删除。

【讨论】:

【参考方案7】:

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

【讨论】:

这没有提供问题的答案。要批评或要求作者澄清,请在他们的帖子下方发表评论 - 您可以随时评论自己的帖子,一旦您有足够的reputation,您就可以comment on any post。 因为我没有 50 声望。这就是我发布回应的答案。

以上是关于在 Xcode 中重命名或重构文件的主要内容,如果未能解决你的问题,请参考以下文章

Xcode:编辑>重构>重命名说“操作无法完成。文件存在。”

如何在 Xcode 5 中重命名模拟器?

如何在 Xcode 5 中重命名项目?

在 Xcode 4.3.3 中重命名 .xib 文件是正确的方法吗?

无法在 UINavigationBar 中重命名或设置新的 backBarButtonItem

如何在 Visual Studio 中重命名方法并保留历史记录?