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

Xcode 9 Autocomplete Not Working 100% - Partially Working

今天早上,Xcode 9.0 (9A235) 显示了一个 new/strange 自动完成框,与以前完全不同。我如何获得完整的自动完成框,以便自动完成看起来像往常一样?

删除 DERIVED DATA 文件夹似乎解决了我的问题。感谢这个post:

当文件不是 Target 的成员时,可能会发生这种情况。打开自动完成不起作用的文件,并显示 Xcode 右上角的 "Utilities" 选项卡(下面屏幕截图中的蓝色)。

确保您的 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 **优化您的编辑器:**

在每个 class 属性 上使用 fileprivate* 和功能,您可以减少每个项目的编译器工作范围。

编写 modular/OOP 代码,让编译器读取的代码更少。

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

* 在 Swift 4 private 变得比 fileprivate 更严格


在 Xcode12 中,删除派生数据的必要频率有了显着改进(尽管冻结增加了)。

尝试:

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

刚刚浪费了一天时间来解决 Xcode (9.2) 的自动完成噩梦。删除派生数据似乎短暂地起作用,然后事情又恢复了。重新启动等和其他建议的巫术未能产生影响。

我放弃并从 Jet Brains 下载 AppCode 的 30 天试用版。自动完成在那里工作得很好,这可能是巧合,但它随后在我 Xcode 的项目中再次开始工作。不能保证它会继续工作...

从测试目标中删除文件解决了我的问题。

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

请尝试这样做:

Select 文件 >> 检查文件是否添加到 UITesting 或 UnitTesting 目标 (文件检查器 -> 目标成员资格)。如果是这样,请取消选中这两个并确保只选择了项目目标。然后构建并尝试自动完成是否正常工作。

这对我有用。希望对大家有所帮助。

对我来说,问题发生在我放弃一个文件的所有更改(在源代码管理> 提交下),这实际上删除了文件。这就是我想要的,我认为文件和对它的所有引用也会被删除。

但是,项目导航器中仍然有对该文件的引用(以红色显示)。在项目导航器中删除(现在不存在的)文件神奇地恢复了自动完成功能。

再多的清理、删除派生数据等也无济于事。当我尝试构建我的项目时,我才意识到已删除的文件仍在显示,这当然失败了,因为它找不到该文件。

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

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

如果您正在编辑的行上或上方存在语法错误,它也不起作用。方法调用末尾缺少大括号——即使它不在您正在编辑的文件中——也会阻止自动完成获取必要的上下文来建议相关命令。丢失的文件(在文件列表中以红色显示)也是如此,即使那不是您正在处理的文件。

当它这样做时,尝试构建以定位错误,然后修复它们。

在我的情况下似乎是特定于文件的 (Xcode 9.2) 对我来说修复是:

  1. 删除问题文件(删除引用)
  2. 清理并构建
  3. 将文件添加回项目(我没有检查测试目标)
  4. 再次构建

经过 3 个小时的尝试,终于 - 自动完成功能正常运行。

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

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

  1. 按 command+1 打开 Project Navigator 面板
  2. 检查是否有丢失的文件

或者您可以:

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

希望对您有所帮助

找了半天终于帮我解决了这个问题。在 Xcode > 首选项 > 文本编辑中,在 "Code Completion" 中,我出于某种原因检查了 "Use Escape key to show completion suggestions"。一旦我取消选中此框,自动完成就像一个魅力,甚至不需要重新启动 Xcode! (Xcode 10)

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

这里有一些解决方法,但很管用。

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

  2. 清理构建文件夹...Command + Shift + Options(Alt) + K

  3. 删除项目的派生数据... 这可以借助 link:

    来完成

  4. 关闭 XCode.

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

构建完成后,建议将返回。我试过两次了。

更新:

有时问题可能只是文件名重复这样简单。 仔细检查您添加的任何新文件名是否与旧文件冲突。

在 Xcode 11.4 中,即使将现有文件移动到另一个组,建议也会消失。只需重新启动 Xcode.

即可解决此问题

我在这里添加了我的项目中发生的事情,以防它可以帮助其他人...我有 2 个同名文件,但我没有意识到.

使用Command + B
Command + RBuild运行 项目
Xcode 有时会搞砸 ;)

  1. 检查您是否在 Xcode -> 首选项 -> 文本编辑
  2. 中选择了 Suggest completions while typing
  3. 导航到 user->Library->Developer->Xcode->Finder 中的 DerivedData 并删除 DerivedData 文件夹

我正在使用 Xcode 10.2 并且遇到了同样的问题。

This answer 来自 axel 帮助我修复。

不管怎样,我再描述一下:

  1. 通过单击鼠标右键转到 YourProject.xcodeproj,然后打开 Show Package Contents
  2. 转到 xcuserdata 并删除您的 youruser.xcuserdatad

如果您还安装了 xcworkspace(如果您已经安装了任何 pods),则执行第 3 步和第 4 步,如果没有,则跳过第 3 步和第 4 步:

  1. 通过单击鼠标右键转到 YourProject.xcworkspace,然后打开 Show Package Contents
  2. 转到xcuserdata并删除你的youruser.xcuserdatad

  3. 退出 Xcode

  4. 使用终端删除派生数据

rm -rf ~/Library/Developer/Xcode/DerivedData

  1. 打开 Xcode 并检查它是否有效。

我的案例可能显得过于具体而无法提供帮助,但它可能会让某人了解如何解决损坏的 auto-completion。 Xcode10.2.1.

就我而言,auto-complete 完全停止工作,这些其他答案都没有帮助我。此外,可以听到计算机上的风扇声音变大,表明工作过度(没有其他应用程序 运行),应该注意我是在 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 文本将被动画化。不管怎样,我把方程式分开,突然 auto-complete 开始工作,风扇安静了!我已经能够通过 re-typing 上面的代码多次重现这个特定问题,然后将其替换为:

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% 无法自动完成的问题,此处所写的 none 有所帮助。我注意到一件事——它在将一些实体添加到 .xcdatamodel 文件后立即被破坏,该文件默认具有 codegen class 定义。

所以当使用旧式代码生成器 none(当然生成 classes)时我并不感到惊讶,即使没有重新启动 xcode 也立即解决了这个问题。 =11=]

如果您对文件命名过多,也会发生这种情况。例如,

Data.swift

Data.swift

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

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

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

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

如果您对奇怪的 completion/auto-completion/intellisense 有疑问(不显示默认的东西,如委托和数据源协议方法)只需更改您的目标(例如从模拟器 iPhone 8 到真实设备),构建项目并切换回原来的目标。

与 Interface Builder(故事板)的问题类似,不显示任何内容,但只要您 select 视图的任何部分都只显示 "nothing selected"。只需切换到其他 Xib/Storyboard(甚至创建新的),检查它是否在那里工作并切换回去。

这些变通办法在这两种情况下都对我有用(Xcode 10.2.1 上的一个项目在一天内遇到了这两个问题)。从我在整个互联网论坛上看到的情况来看,这些错误似乎自 Xcode 6.x 左右以来从未修复过。

干杯!

Xcode 版本 11.0 (11A420a)

我已经为 Xcode V11.0 尝试了 的解决方案。试了几次都没有结果。

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

  1. Library/Developer/Xcode/Derived 数据(如前所述)
  2. Library/Developer/Xcode/UserData/IDEEditorInteractivityHistory

该解决方案现在对我有帮助。可能对其他人有用

在我的情况下 (Xcode 11.1),它发生在我使用此命令 defaults write com.apple.dt.Xcode IDEIndexDisable -bool true.

停止 Xcode auto-indexing

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

这对我有用:

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

  2. 删除项目。

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

  4. 它会自动运行。

Xcode 11.3,macOS catalina

进程 parsecd 达到 cpu 的 100%,所以杀掉它对我有帮助

与 Xcode 11.3 有同样的问题。以上都无济于事,事实证明我遇到了构建错误。只需修复构建错误,自动完成功能就会再次运行。

对于Xcode 11.4 (11E146)

文件夹名称中的反斜杠破坏了自动完成功能,如果是这种情况,请将其删除并重新构建。

转到目录下并删除其中的所有文件夹。

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

对我有用。

使用 swiftUI 尝试提取您的子视图,否则自动完成功能将不起作用。

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

在右侧的“文件检查器”中,尝试打开或关闭“目标成员资格”。如果您正在创建多平台项目,请尝试切换 (macOS)。

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

我在 Xcode 11.3.1 中遇到了同样的问题。在我的情况下,问题是由于重复的文件名/删除的文件名引起的。最好运行应用一次,检查是否有被删除的files/classes,这样会出现语法错误