Xcode只能重构C和Objective-C代码。如何在Xcode 6中重命名Swift类名称?


103

我已经在Xcode 6 beta版中创建了一个新的Single View Application Project。我想将swift类重命名ViewController.swift为其他名称。但是当我选择Refactor-> Rename时,它给出error Xcode can only refactor C and Objective-C code

在此处输入图片说明

任何想法如何重命名Xcode 6中的swift类?

更新:

最终,Xcode 9支持Swift重构。苹果花了3年时间才添加此基本功能。重构


9
目前没有。提交错误
jtbandes 2014年

19
提出此问题一年后,唯一的答案仍然是手动查找和替换!这
真是

1
AppCode可以完成此重构。对于.swift文件中定义的类,这将分为两个步骤。1.选择类名称,然后执行Refactor> Rename。2.选择.swift文件并执行Refactor> Rename
张丹

5
即使两年后!未实现???
米拉德·法里德尼亚

实际上,这很不错,它可以在复制和粘贴C语言中的100个项目时带回过去的回忆
LegendLength 17-4-6

Answers:


25

您可以在Xcode6右侧的File Inspector中更改类的名称。

  • 打开你的课
  • 转到文件检查器>识别并键入部分
  • 在“名称”字段中重命名现有的类。

就这样!以前,我在类文件中手动重命名了类名。


11
感谢您的答复,但它仅更改文件结构中的类名称。我仍然必须在代码中的任何地方更改类名的所有实例。而使用Refactor-> Rename ...用于更改文件结构和代码中的名称。
Khawar 2014年

没问题!我只是认为这是一种解决方案,直到Apple解决此问题。您也可以在当天之前使用“查找和替换”功能。无论如何,内置在Refactor-> Rename中的动作几乎相同。
Newone 2014年

1
@Newone不会做同样的事情。例如,“查找和替换”将在字符串内部进行搜索,而“重构->重命名”则不应这样做。
Martin Epsz 2015年

15

我一直在Project中使用“ 查找”>“查找并替换”,虽然它并不完美,但是可以正常工作。



10

从本教程开始。

拆分您的iOS8 Swift代码

首先,让我们将View Controller重命名为更有意义的东西。打开您的ViewController.swift文件,并将所有对“ ViewController”的引用替换为我们的新名称“ SearchResultsViewController”。也将文件重命名为SearchResultsViewController.swift。

如果您尝试从此处运行应用程序,则会崩溃。这是因为我们的情节提要文件尚未更新,无法了解新课程!因此,打开Main.storyboard,在场景中选择“ View Controller”对象(左侧导航),然后选择Identity Inspector(右侧的第三个按钮)。

在这里,让我们将类从“ ViewController”更改为“ SearchResultsViewController”。现在我们应该回到正轨。检查项目是否仍然有效,让我们继续。


谢谢您的回复。我已经尝试过这种方法。但这似乎不是一个好方法。如果我在10个类中使用ViewController.swift对象,则必须在所有类中手动重命名它们。如此痛苦和浪费时间:(
Khawar 2014年

@ Khawar-是的,您是对的,但是现在可能没有其他选择了,而且beta中也需要swift。不用担心..希望苹果会找到另一个更简单的方法,然后(目标c ???):)
iPatel

1
我使用的是7.2版(7C68),仍然无法进行重命名重构
Barbara R

在7.3中它也是不可能的。
ManiaChamp '16


2

Xcode 9

Xcode 9现在支持在Swift中重命名。这是在WWDC 2017中宣布的。

在此处输入图片说明


谢谢,谢谢苹果,但是重命名仍然无法正常进行。现在,它使Xcode崩溃了。
kisileno

是的...从9.0 beta版开始,重命名会使Xcode崩溃。但这是将来应该可行的方法:)
Guy Daher
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.