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

时间:2017-09-30 15:38:35

标签: xcode autocomplete xcode9

今天早上,Xcode 9.0(9A235)显示了一个新的/奇怪的自动完成框,它根本不像以前那样。如何获得完整的自动完成框,以便自动完成看起来像通常一样?

enter image description here

36 个答案:

答案 0 :(得分:73)

尝试:

  1. 转到 Xcode>偏好>文字编辑
  2. 在代码完成时 - 在键入'
  3. 时取消选中'建议完成次数
  4. 退出Xcode,然后重新启动Xcode。
  5. 转到 Xcode>偏好>文字编辑再次
  6. 退出Xcode,然后重新启动Xcode。
  7. 现在转到代码完成并检查&#39;在输入时建议完成次数<。&#39;。
  8. 尝试输入库函数或枚举并享受!

答案 1 :(得分:40)

删除DERIVED DATA文件夹似乎解决了我的问题。感谢这篇文章:swift println() not showing autocomplete options while writting code

答案 2 :(得分:19)

要尝试的事情:

1

如果您使用cocoapods,请在项目目录中运行此命令:

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


2

清理缓存数据

清理项目 - &gt;为Cmd + Shift + K

清理构建文件夹 - &gt; CMD + Shift +选项+ K

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


3

检查构建阶段的编译源。

项目中的每个.swift.m文件都应该在此列表中,或者不会在这些文件中自动填充。


4

优化您的编辑:

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

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

当结果是复杂计算时,避免使用Type Inferance,并尝试将复杂计算分解为let this = smallerOperation语句

答案 3 :(得分:12)

当文件不是Target的成员时,可能会发生这种情况。打开自动填充功能不起作用的文件,并显示&#34; Utilities&#34; Xcode右上角的标签(下面的屏幕截图中为蓝色)。 Screenshot of Xcode top right view buttons

Screenshot of Xcode Target Membership options

确保您的目标(通常是您的应用的名称)已经过检查。自动完成功能几乎可以立即生效,无需重新启动Xcode,清除或删除派生数据。

答案 4 :(得分:7)

Xcode版本11.0(11A420a)

我已经尝试过Lal Krishna中针对Xcode V11.0的解决方案。它工作了几次,但后来我没有结果。

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

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

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

答案 5 :(得分:5)

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

axel 中的

This answer帮助我修复了问题。

无论如何,我将描述更多:

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

如果您还安装了xcworkspace(如果已经安装了 pod ),请执行步骤3&4,否则请跳过步骤3&4:

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

  3. 退出Xcode

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

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

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

enter image description here

答案 6 :(得分:5)

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

答案 7 :(得分:4)

请尝试这样做:

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

这对我有用。希望它对某人有所帮助。

答案 8 :(得分:3)

如果您重复命名文件,也会发生这种情况。例如,

Data.swift

Data.swift

答案 9 :(得分:2)

对于Xcode 11.4(11E146)

文件夹名称中的反斜杠破坏了自动补全功能,在这种情况下,请将其删除并重新构建。

enter image description here

答案 10 :(得分:2)

只是失去了一天试图解决Xcode(9.2)的自动完成噩梦。删除派生数据似乎可以简单地工作,然后恢复原状。重启等以及其他建议的伏都教无法发挥作用。

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

答案 11 :(得分:2)

主要是因为项目导航器中某些文件的位置丢失(生成错误)

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

或者您可以:

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

希望这会有所帮助

答案 12 :(得分:2)

经过长时间的搜索,我终于为我解决了这个问题。在Xcode>首选项>文本编辑中的“代码完成”中,出于某种原因,我选择了“使用Escape键显示完成建议”。取消选中此框后,自动完成功能就像一个超级按钮,甚至不需要重新启动Xcode! (Xcode 10)

答案 13 :(得分:2)

这里有一些解决方法,但是可以。

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

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

  3. 删除项目的派生数据... 可以通过以下链接完成此操作:

    How can I delete derived data in Xcode 9?

  4. 关闭XCode。

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

一旦构建完成,建议将返回。我已经试过两次了。

答案 14 :(得分:1)

可能是因为很多原因;一个可能的原因是内存问题,即系统内存不足时。

您可以使用&#34;活动监视器&#34;来检查您的内存使用情况。在macOS中。

尝试使用命令 + shift + k 清理项目。

退出Xcode并再次启动它并构建一次,然后开始输入自动完成功能,它应该可以正常工作。

答案 15 :(得分:1)

转到目录下,然后删除目录上的所有文件夹。

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

对我有用。

答案 16 :(得分:1)

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

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

答案 17 :(得分:1)

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

答案 18 :(得分:1)

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

答案 19 :(得分:1)

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

答案 20 :(得分:1)

对我来说,当我放弃一个文件的所有更改(在“源代码管理”>“提交”下)时,就会发生问题,从而有效地删除了该文件。这就是我想要的,我认为该文件及其所有引用也将被删除。

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

没有任何帮助进行清理,删除派生数据等。我只是意识到当我尝试构建项目时,删除的文件仍在显示,当然失败了,因为找不到该文件。

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

答案 21 :(得分:1)

在我看来,该文件特定于文件(Xcode 9.2),对我来说,解决方法是:

  1. 删除问题文件(删除参考)
  2. 清洁并构建
  3. 将文件重新添加到项目中(我没有检查测试目标)
  4. 重新构建

最后,经过3个小时的尝试-自动填充会按预期运行。

答案 22 :(得分:1)

  1. 检查是否在Xcode->首选项->文本编辑中选择了int number = 0; do { number = reader.nextInt(); if (number>0) { sum+=number; list++; } else if (number<0) { System.out.println("ERROR type in a postive integer"); } }while (number!=0); reader.close();
  2. 在Finder中导航到用户->库-> Developer-> Xcode-> DerivedData并删除DerivedData文件夹

答案 23 :(得分:0)

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

答案 24 :(得分:0)

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

enter image description here

答案 25 :(得分:0)

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

重启我的Mac 之后,一切恢复正常

答案 26 :(得分:0)

如果您对奇怪的完成/自动完成/智能化有疑问(不显示诸如委托和数据源协议方法之类的默认内容),只需更改目标(例如,从模拟器iPhone 8到真实设备),构建项目并切换回您原来的目标。

与Interface Builder(故事板)的问题类似,该问题不会显示任何内容,但是只要您选择视图的任何部分,都只会“未选择任何内容”。只需切换到其他Xib / Storyboard(甚至创建新的),检查它是否在那里工作,然后再切换回去即可。

这些变通办法对我都有效(在Xcode 10.2.1上的一个项目中一天都遇到了这两个问题)。从我在互联网论坛上看到的所有内容来看,这些似乎是自Xcode 6.x以来从未修复的错误。

干杯!

答案 27 :(得分:0)

我遇到的问题是100%无法自动完成,此处没有任何帮助。我注意到的一件事–在向.xcdatamodel文件中添加了一些实体(默认情况下具有代码生成类定义)后,它就被打破了。

因此,即使不重新启动xcode,使用老式代码生成器(即使生成类)也无法立即解决该问题,对此我并不感到惊讶。

enter image description here

答案 28 :(得分:0)

在我的情况下(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。

答案 29 :(得分:0)

这对我有用:

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

  2. 删除项目。

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

  4. 它可以自动运行。

答案 30 :(得分:0)

Xcode 11.3,macOS catalina

进程parsecd达到100%的cpu,所以杀死它可以帮助我

答案 31 :(得分:0)

Xcode 11.3遇到相同的问题。上面没有任何帮助,事实证明我有构建错误。只需解决构建错误,自动补全功能将再次起作用。

答案 32 :(得分:0)

我的案子似乎太过具体而无法提供帮助,但它可能使某人对如何解决自动补全功能产生了想法。 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
 }

答案 33 :(得分:0)

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

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

答案 34 :(得分:0)

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

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

答案 35 :(得分:-1)

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

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

这样做时,尝试构建以查找错误,然后修复错误。