如何在Xcode中重构Swift代码?

46

在Xcode 7.1中是否有重构Swift的方法?

当我尝试重命名变量(例如,高亮显示、右键单击、重构>重命名),Xcode弹出错误对话框:

无法重构Swift代码。Xcode只能重构C和Objective-C代码。

有没有解决办法?


5
目前你无法进行重命名。类似的问题在此处:https://dev59.com/i2Af5IYBdhLWcg3w7mU_. - Martin R
33
2016年,一款主流的IDE居然不能处理像重构这样基础的任务,这简直荒唐至极。1995年,我使用Visual Basic 3时就已经可以进行重构了。 - MusiGenesis
5
同样的问题仍然存在于Xcode 8中。:( - Shad
Xcode 9承诺对Swift进行重构。Xcode 9的发布说明: https://developer.apple.com/library/content/documentation/DeveloperTools/Conceptual/WhatsNewXcode/xcode_9/xcode_9.html#//apple_ref/doc/uid/TP40004626-CH8-SW2 - Shad
@Shad,是时候了 :) - Dániel Nagy
显示剩余2条评论
4个回答

86

据我所知,重构目前在Swift中不起作用,但至少在同一文件(范围)中,您可以执行以下操作:

输入图像说明

9
你是如何录制屏幕的? - Mohamad
9
@Mohamad使用LICEcap - Dániel Nagy
2
我非常期待在Xcode中引入“真正的”重构功能。在那之前,这无疑是我见过的最好的解决方案!谢谢@Dániel Nagy - Nikolaj Simonsen
你能做什么?你是怎么得到那个下拉菜单的? - TimSim
@TimSim 如果你点击一个变量,然后将光标悬停在上面一秒钟,它就会出现在右侧,或者选择编辑器 -> 编辑所有范围。 - Dániel Nagy
11
选择后的快捷键是 cmd+ctrl+E。 - ZaEeM ZaFaR

14

Xcode 9 - 10

Xcode 9 现在支持 Swift 的重构,这是在2017年WWDC大会上宣布的。

图片描述


6
缺乏重构真是令人震惊(尤其是我刚从使用VS的大型任务中回来)。 然而,我刚刚注意到有人已经采取了行动。 在GitHub上,有一个名为Refactorator Xcode Plugin的项目(MIT许可证),它声称:

Refactorator是一个Xcode插件,用于重构Swift和现在的Objective-C代码。 它将重命名公共或内部变量,函数,枚举等。 对于私有和本地实体,请使用Xcode现有的“编辑所有范围”功能。

充分披露的是,我与他们无关,现在正准备安装该产品。

我在处理它时没有什么好运气。例如,更改变量名可能会捕获大多数但不是全部用法(为什么?)-查找和替换则可以100%成功。我并不感到印象深刻。 - Lloyd Sargent

2

截至Xcode 7.2 beta版本,重构工具不支持Swift。

我的做法是使用类型检查器。更改某个名称/类型,然后修复所有编译错误。由于强类型,您可以更有信心地采用此方法来捕获所有问题。有时我会故意更改一些内容并暂时将它们破坏以检查对象或类型的使用或访问位置。

或者使用AppCode进行重构,我听说它很好,但自己还没有尝试过。


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