Xcode 9自动完成不工作100%-部分工作

今天早上,Xcode 9.0(9A235)显示了一个新的/奇怪的自动完成框,完全不是以前的样子。我如何得到完整的自动完成框,使自动完成看起来像它通常做什么?

enter image description here

71122 次浏览

删除派生数据文件夹似乎解决了我的问题

当文件不是 Target 的成员时,可能会发生这种情况。打开自动补全不起作用的文件,并显示 Xcode 右上角的“ Utitility”选项卡(下面的截图中是蓝色)。 Screenshot of Xcode top right view buttons

Screenshot of Xcode Target Membership options

确保选中 Target (通常是应用程序的名称)。自动补全应该几乎可以立即工作,而无需重新启动 Xcode、清理或删除派生数据。

如果它已经被检查过了,一定要取消检查并再次检查。对我来说,它起到了作用。

可以尝试的事情: # 1 如果使用 cocoapods,请在项目目录中运行此命令:

rm -rf ~/Library/Caches/CocoaPods;
rm -rf Pods; rm -rf ~/Library/Developer/Xcode/DerivedData/*;
pod deintegrate; pod setup; pod install;

# 2 * * 清除缓存数据 * *

清理项目-> Cmd + Shift + K

清除构建文件夹-> Cmd + Shift + Option + K

如果你跳过了第一步:
删除派生数据
Xcode Preferences-> Locations->
箭头符号带您到 DerrivedData-> 删除文件夹


# 3 检查你的构建阶段的编译资源

项目中的每个 .swift.m文件都应该在这个列表中,否则它不会在这些文件中自动完成。


# 4 优化你的编辑器:

对每个类属性和函数使用 filepprivate * 可以减少每个项的编译器工作范围。

编写模块化/OOP 代码,这样编译器可以读取的代码就更少了。

当结果是一个复杂的计算时,避免使用类型推断,并尝试将复杂的计算分解为 let this = smallerOperation语句

* 在 Swift 4中,private 比 filepprivate 更严格


在 Xcode 12中,在删除派生数据的频率方面有了显著的改进(尽管冻结增加了)。

试试:

  1. 转到 Xcode > 参数设置 > 文本编辑
  2. 在“代码完成”下-取消选中“在键入时建议完成”
  3. 离开 Xcode,重新启动 Xcode。
  4. 再转到 Xcode > 参数设置 > 文本编辑
  5. 离开 Xcode,重新启动 Xcode。
  6. 现在转到代码完成和 检查完毕“在输入时建议完成”。
  7. 尝试键入库函数或枚举,并享受!

刚刚花了一天时间来解决 Xcode (9.2)的自动补全问题。删除派生数据似乎只能短暂工作,然后事情就恢复了。重新启动等等和其他建议的巫术没有起到作用。

我放弃了,从 Jet Brains 下载了30天的 AppCode 试用版。“自动补全”在那里工作得很好,这可能是个巧合,但它后来又开始在我在 Xcode 的项目中起作用。不能保证它能继续工作。

从“测试目标”中删除该文件修复了我的问题。

对我来说,它发生在我的测试文件中,因为出于某种原因,它不是目标的一部分。设置目标成员解决了这个问题。

请试着这样做:

选择文件 > > 检查该文件是否添加到 UITtestingorUnitTestingtarget(档案督察-> 目标成员)。如果是这样,请取消这两个选项,并确保只选择了项目目标。然后构建并尝试自动完成是否工作正常。

这招对我很管用,希望能帮到别人。

对我来说,当我丢弃一个文件(在 Source Control > Commit 下)的所有更改时,问题就出现了,这实际上删除了该文件。这就是我想要的,我认为该文件和所有引用它将被删除了。

但是,在 Project 导航器中仍然有对该文件的引用(显示为红色)。删除 Project 导航器中的(现在不存在的)文件奇迹般地带回了自动完成。

清理、删除派生数据等无济于事。我只是意识到删除的文件仍然显示时,我尝试建立我的项目,当然失败了,因为它无法找到该文件。

希望这能帮助某人节省30分钟:)

只有当文件的源代码类型没有设置为 Objective-C 时,或者当您使用另一种语言编写时(即使只有一小段,比如说,C) ,自动完成才不起作用。

如果在您正在编辑的行上或行上出现语法错误,那么它也无法工作。在方法调用的末尾缺少一个花括号(即使它不在您正在编辑的文件中)将阻止自动完成获取建议相关命令所需的上下文。一个丢失的文件(在文件列表中以红色显示)也是如此,即使它不是您正在处理的文件。

当它这样做时,尝试生成来定位错误,然后修复它们。

在我的案例中,它似乎是特定于文件的(Xcode 9.2) ,对我来说,修复方法是:

  1. 删除问题文件(删除引用)
  2. 清洁及建造
  3. 向项目中添加文件(我没有检查测试目标)
  4. 重建

最后经过3个小时的尝试一切-自动完成工程,因为它应该。

这个链接帮助了我。打开构建设置并填写框架搜索路径。见下图。

enter image description here

问题主要是因为在项目导航器中缺少某些文件的位置(构建错误)

  1. 按命令 + 1打开 Project Navigator窗格
  2. 检查是否有任何丢失的文件

或者你可以:

  1. 删除衍生数据(命令 + shift + K)
  2. 清除生成文件夹(命令 + shift + 选项 + K)
  3. 再次按 build (命令 + B)
  4. 您应该会看到构建错误,Xcode 找不到一些阻止构建工具处理自动完成的文件。
  5. 更正并修复您所看到的任何丢失的文件。

希望这个能帮上忙

经过长时间的寻找,我终于为自己解决了这个问题。在 Xcode > Preferences > Text Editing 中,在“ Code Completion”中,出于某种原因,我选中了“ Use Escape key to show )”。只要我取消选中此框,自动完成工作就像一个魅力,甚至不需要重新启动 Xcode!(Xcode 10)

在 Xcode,构建错误可能会破坏自动完成功能。

这里有一点变通,但工程。

  1. 清理项目... Command + Shift + K

  2. 清除生成文件夹... Command + Shift + Options (Alt) + K

  3. 删除项目的派生数据..。 这可以在以下链接的帮助下完成:

    如何删除 Xcode 9中的派生数据?

  4. 关闭 XCode。

  5. 重新打开 XCode (让索引完成)并构建项目... Command + B

一旦它将与建设完成,建议将回来。我已经尝试了两次。

更新:

有时候问题可以很简单,比如复制文件名。 仔细检查您添加的任何新文件名是否与旧文件冲突。

在 Xcode 11.4中,即使将现有文件移动到另一个组,建议也会消失。只要重新启动 Xcode 就可以解决这个问题。

我在这里添加了我的项目正在进行的内容,以防它可以帮助其他人... ... 我有两个同名的文件和我没有意识到。

使用 Command + B
Command + R建造快跑的项目
Xcode 有时会搞砸;)

  1. 检查是否在 Xcode-> Preferences-> Text Editing 中选择了 Suggest completions while typing
  2. 导航到 user-> Library-> Developer-> Xcode-> ReferedData in Finder,然后删除“衍生数据”文件夹

我的情况可能显得太具体,以帮助,但它可能会给某人一个想法,如何解决破碎的自动完成。Xcode 10.2.1.

在我的情况下,自动完成完全停止工作,没有这些其他的答案帮助我。此外,电脑上的风扇声音越来越大,表明有些东西超负荷工作(没有其他应用程序运行) ,应该注意到我正在 MacBook Pro 笔记本电脑上编辑。这似乎与编辑努力解析我写的方程式有关:

switch mtype {
case .indeterminate:
newPosition.x = (frame.width - mainFigureText.frame.width) / 2
case .right:
newPosition.x = (((frame.width / 2) - mainFigureText.frame.width) / 2) + (frame.width / 2)
case .left:
newPosition.x = (((frame.width / 2) - mainFigureText.frame.width) / 2)
}

我正在寻找动画的文本视图左,右,或到中间取决于用户的喜好。该 newPosition是一个 CGPoint,文本将动画到。不管怎样,我把方程式分开,突然自动完成开始工作,风扇就安静下来了!通过重新输入上面的代码,然后用以下代码替换,我已经不止一次地重新创建了这个特定的问题:

let halfFrameWidth: CGFloat = frame.width / 2
let middleLeft = (halfFrameWidth - mainFigureText.frame.width) / 2


switch doseType {
case .right:
newPosition.x = middleLeft + halfFrameWidth
case .left:
newPosition.x = middleLeft
default:
newPosition.x = (frame.width - mainFigureText.frame.width) / 2
}

我有一个问题,100% 不工作自动完成,没有一个写在这里有帮助。我注意到一件事——它在添加了一些实体之后被破坏了。Xcdatamodel 文件,默认情况下具有 codegen 类定义。

因此,当使用旧式的 codegen 没有(当然也没有生成类)立即解决这个问题时,我并不感到惊讶,即使没有重新启动 xcode。

enter image description here

如果冗余地命名文件,也会发生这种情况,

Data.swift

Data.swift

我想在这一堆解决方案中再加上一个,因为这是唯一一个对我有用的方案,在这里找不到。

Xcode 通常为每个项目提供两个默认的构建配置。Release & Debug.我有一个额外的单元测试名为 Testing。在 Xcode 10.1、10.2、10.3和11 beta 中,新的构建系统似乎并不喜欢它,只有在使用 ReleaseDebug时才会自动完成。任何自定义构建配置都会破坏混合(迅速 + 对象)项目中的单元测试自动完成。

对于 Xcode 11.1,仅仅执行 Clean Build Folder或删除派生数据不足以修复自动完成。

只是在 重启我的 Mac之后,一切才恢复正常

如果你对奇怪的完成/自动完成/智能感知(不显示默认的东西,如委托和数据源协议方法)有问题,只要改变你的目标(例如从模拟器 iPhone 8到真正的设备) ,建立项目和切换回你的原始目标。

类似于 Interface Builder (故事板)没有显示任何东西,但只有“没有选择”,无论你选择任何视图的一部分。只需切换到其他 Xib/Storyboard (甚至创建新的) ,检查它是否在那里工作,然后切换回来。

这些变通方法在两种情况下都对我有效(在 Xcode 10.2.1的一个项目中,一天内就出现了这两个问题)。从我所看到的所有互联网论坛似乎这些错误从 Xcode 6.x 左右从未修复。

干杯!

Xcode Version 11.0(11A420a)

我已经尝试了 Xcode V11.0的 Lal Krishna解决方案。好几次都成功了,但后来都没有结果。

我找到了一个解决方案。您必须删除两个文件:

  1. 库/开发人员/Xcode/派生数据(如前所述)
  2. Library/Developer/Xcode/UserData/IDEEditorInteractivityHistory

这个解决方案现在对我有帮助,对其他人可能也有用

在我的例子中(Xcode 11.1) ,当我使用这个命令 defaults write com.apple.dt.Xcode IDEIndexDisable -bool true停止 Xcode 自动索引时发生了这种情况。

所以我用 defaults write com.apple.dt.Xcode IDEIndexDisable -bool false回滚它。 然后重新启动 macOS 并再次运行 Xcode。

这对我有用:

  1. 保存所有项目文件的备份。

  2. 删除项目。

  3. 创建一个新项目并添加所有文件。

  4. 而且它自动工作。

Xcode 11.3 MacOS Catalina

进程 parsecd 达到100% 的 CPU,所以杀死它有助于我

Xcode 11.3也有同样的问题。没有什么以上没有帮助,原来我有构建错误。只要修复构建错误和自动完成将再次工作。

对于 Xcode 11.4(11E146)

反斜杠在文件夹名打破自动补全功能,如果是这种情况下删除它,并重新建立。

enter image description here

删除目录下的所有文件夹。

{Your User}/Library/Developer/Xcode/DeriveData

这招对我很管用。

试着提取你的子视图,否则自动补全将不起作用。

如果您有很多未提取的子视图,自动完成将停止工作

在右侧的“文件检查器”中,尝试切换“目标成员”如果要创建多平台项目,请尝试切换(macOS)。

自动完成应立即工作,无需重新启动。

我在 Xcode 也遇到过同样的问题。在我的情况下,问题是由于重复的文件名/删除的文件名。最好运行应用程序一次,并检查是否有任何已删除的文件/类,以便您将得到一个语法错误。