Xcode 8.2 代码完成不工作

Xcode 8.2 Code Completion Not Working

出于某种原因,在 Xcode 8.2 中,我的代码完成已停止工作。我清理了我的产品,重新启动了 Xcode,重新启动了我的计算机,并删除了派生数据,但仍然没有成功。我已将此提交给 Apple 支持。有没有人 运行 以前参与过这个问题并且能够修复它?

代码完成在 Xcode 8.2.1 中也对我停止工作,并且没有多少 clean-up、派生数据丢弃或重新启动修复它。过了一会儿,我意识到代码完成只是在我正在处理的扩展范围内被破坏了。如果手动输入,代码将被正确突出显示并且可以正常编译,因此这不是源代码丢弃负责代码完成的任何解析器的问题。

在这个非常简单的示例中,这是它发生的具体上下文:

struct SomeStruct {

    static let foobar1 = {
        return NSBezierPath()
    }()

}

extension SomeStruct {

    static let foobar2 = {
        return NSBezierPath()
    }()

}

代码完成在 foobar1 的实现块中工作正常,但不适用于 foobar2。似乎触发它的扩展中存在 static let。 struct 和 class.

都会出现此问题

看起来像 Xcode 的错误,所以对我来说唯一的解决方法是将 foobar2 移动到 SomeStruct 的主要定义中。

我也遇到过这个问题。对我来说,每当我进行编译时,代码完成和格式设置都会在我当前的工作源文件中丢失。如果我返回并切换到不同的选项卡然后返回,一两秒钟后它又开始工作了。有时即使那样也行不通,我必须留在同一个选项卡中并打开另一个文件,然后导航回来。

如果我让 Xcode 打开并让计算机休眠几个小时然后再回来,即使这些方法也会失败。当发生这种情况时,我必须退出 Xcode,有时强制退出,然后在返回后执行上述步骤。但是在每次编译或编译之后我都不得不弄乱它并且 运行 我这样做了。还没有尝试过 8.3 测试版。

更新: 根据@Dareon 下面的解决方案也适用于 Xcode 版本 8.3 (8E162) 和 8.3.2 (8E2002)。谢谢@Dareon 的确认。 :)

我遇到了同样的问题,以下对我有用。

我正在使用 Xcode 版本 8.2.1 (8C1002)。

  1. 转到 Xcode > 首选项 > 文本编辑
  2. 在代码完成下 - 取消选中 'Suggest completions while typing'
  3. 退出 Xcode,然后重新启动 Xcode。
  4. 再次转到 Xcode > 首选项 > 文本编辑
  5. 退出 Xcode,然后重新启动 Xcode。
  6. 现在转到代码完成并检查 'Suggest completions while typing'。
  7. 尝试输入库函数或枚举并尽情享受吧!

至少,它对我有用。

重新启动 Xcode 对我有用。

我遇到了 "indexing" 不起作用的相同问题。因为我使用的是 pod 和静态库。我所做的只是分别重建静态库。

希望对您有所帮助。

只需在 Generic iOS Device 上清理并构建您的应用程序一次,这可能是由于某些编译时问题导致智能禁用,我从 Xcode 8.2.1 开始看到此错误。

如果您有任何大的静态文字,请尝试将它们注释掉。这些有时会使编译器出错。

对我有用的是删除派生数据:

Xcode 首选项 -> 位置 -> 箭头符号带你到 "Derived Data" -> 删除文件夹

没有其他方法对我有用,但这种奇怪的方法有用:

  1. 退出Xcode
  2. 进入您的主目录,如果您像我一样,该目录中充斥着垃圾名称的空目录
  3. rmdir *(只要你离开标签,这将只杀死空目录,这就是你想要的)
  4. 启动Xcode,又是快乐时光