Xcode 9 中重命名失败

47

我在Xcode 9中使用了"renamed"函数来重命名一个名为"DefaultRequestURL"的变量,结果弹出以下警告: alert image 我已经检查过"ComposeController.swift"文件,没有找到"DefaultRequestURL"。 我尝试重新启动Xcode并执行"Product -> Clean",但仍然失败。

为什么会这样?我该怎么做?

4个回答

95

请过几分钟后再试。可能是后台索引仍在运行。此外,您必须构建您的项目才能使用重构->重命名功能。 实际上,这可能是Xcode 9中的一个错误。尝试9.1 beta版本,重构功能不完美,但在那里工作得更好。 这可能有帮助:https://forums.developer.apple.com/thread/80331

更新:

  1. 关闭Xcode
  2. 转到〜/ Library / Developer / Xcode / DerivedData并删除文件夹内容,包括“ModuleCache”。
  3. 打开您的项目并构建
  4. 现在尝试重命名功能。它应该可以工作!

更新2:

对于Xcode 10,只需重新启动即可。

更新3:

对于Xcode 12仍然有效。有时仅重新启动有帮助,有时需要删除模块缓存。有时甚至清除构建也有帮助。


1
你的意思是删除DerivedData文件夹中的所有内容吗?那里有很多东西。你是说我们一个也不需要吗? - ekashking
@ekashking 这是一些临时文件/缓存。删除它们是安全的。Xcode 存储索引、对象文件、一些预构建的东西,Swift 模块缓存等等。这些内容将在您再次构建项目时重新出现。 - Vlad E. Borovtsov
2
截至2018年4月的Xcode 9.3,这对我无效。 - James Shapiro
6
我刚遇到了与Xcode 10.1相同的问题。在Swift中的枚举中,我可以重命名4个案例中的2个,而另外2个则会出现错误消息。(它们都是正常标识符,没有'default'或其他必须放入引号中的内容。)重新启动无效。关闭Xcode,删除DerivedData文件夹有效,然后重新启动Xcode有效。-我没有等待索引完成,因为这并不是必要的。当您尝试进行重构但索引尚未完成时,它将需要更长的时间,因为它首先要完成索引。 - Michael
使用Xcode 10.2.1:仅仅关闭和重新打开并不能解决我的问题。删除DerivedData文件夹才可以。 - Heki
显示剩余3条评论

24

感谢Vlad E. Borovtsov,他的帮助帮我解决了问题,我找到了不关闭xcode的方法。以下是我的解决方案:

  1. 进入 ~/Library/Developer/Xcode/,删除 DerivedData 文件夹

  2. 按 command+r 进行运行, 或按 command+b 进行构建

  3. 尝试重命名,对我有用。

xcode 重新索引和重命名可以解决问题。


1
嗯,应该可以工作。但是当你有机会时,关闭Xcode并重新启动总是很好的习惯。重新启动总是能让它运行得更快,特别是如果你使用了storyboards。 - Vlad E. Borovtsov
@JamesShapiro 对不起,我只是针对Xcode9.1尝试了一下。 - wlixcc
我正在使用Xcode 10.0,问题仍然存在于该版本中,它在Xcode 11中得到解决了吗? - Zoombie
5
在11.3.1版本中,先在Xcode中清除构建目录,退出Xcode,删除DerivedData并重新启动Xcode,但仍无法重命名。必须在Finder中进行重命名,并在Xcode中重新添加文件。 - jomni

2

不需要删除DerivedData文件夹并重新构建。

  1. 关闭Xcode
  2. 删除DerivedData/ModuleCache.noindex文件夹
  3. 打开Xcode
  4. 重命名/重构

在10.2.1上工作

更新

在Xcode 12 beta 4上工作,但需要等待索引完成。


1
它也发生在11.3.1上。而且这种方法仍然有效! - Vlad E. Borovtsov
它发生在11.6版本中。清理、重启Xcode都不起作用。我会尝试这些步骤。编辑:这并没有起作用。 - Victor Engel

1

由于某些原因,我尝试重命名的文件夹已经存在。手动删除该文件夹解决了问题。


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