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

问题描述 投票:53回答:22

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

enter image description here

xcode autocomplete xcode9
22个回答
78
投票

尝试:

  1. 转到Xcode>首选项>文本编辑
  2. 在代码完成下 - 取消选中'在输入时建议完成'
  3. 退出Xcode然后重新启动Xcode。
  4. 再次转到Xcode>首选项>文本编辑
  5. 退出Xcode然后重新启动Xcode。
  6. 现在转到代码完成并选中“在输入时建议完成”。
  7. 尝试输入库函数或枚举并享受!

2
投票

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

  1. 按命令+ 1打开enter image description here窗格
  2. 检查是否有任何丢失的文件

或者你可以:

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

希望这可以帮助


2
投票

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


2
投票

这里有一些解决方法,但有效。

  1. 清理项目... Command + Shift + K.
  2. 清理构建文件夹... Command + Shift + Options(Alt)+ K.
  3. 删除项目的派生数据......这可以通过以下链接完成: Project Navigator
  4. 关闭XCode。
  5. 重新打开XCode(让索引完成)并构建项目... Command + B.

一旦建成完成,建议将会回来。我试了两次。


1
投票

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


1
投票

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

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

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

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


1
投票

我在这里添加了我的项目中发生了什么,以防万一它可以帮助其他人...我有两个同名的文件,我没有意识到。


1
投票

使用How can I delete derived data in Xcode 9? 或者Command + B来构建或运行项目 Xcode有时会搞砸;)


1
投票
  1. 检查您是否在Xcode中选择了Command + R - >首选项 - >文本编辑
  2. 在Finder中导航到user-> Library-> Developer-> Xcode-> DerivedData并删除DerivedData文件夹

1
投票

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

您可以使用macOS中的“活动监视器”检查内存使用情况。

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

退出Xcode并再次启动它并构建它然后开始键入自动完成,它应该工作正常。


0
投票

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

Suggest completions while typing


41
投票

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


0
投票

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


0
投票

我的情况可能看起来过于具体而无法提供帮助,但它可能会让某人了解如何解决损坏的自动完成问题。 Xcode 10.2.1。

在我的情况下,自动完成停止了完全工作,而这些其他答案没有帮助我。此外,可以听到计算机上的风扇响亮,表明有些东西过度工作(没有其他应用程序运行),应该注意我在MacBook Pro笔记本电脑上进行编辑。它似乎与编辑努力解析我写的等式有关:

enter image description here

我希望根据用户首选项向左,右或中间设置文本视图的动画。 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

-1
投票

自动完成不起作用的唯一时间是文件的源代码类型未设置为Objective-C或者您使用其他语言编写时(即使只有一小部分,例如C)。

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

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


19
投票

要尝试的事情:

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

检查Build Phase的编译源。

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

4

优化您的编辑器:

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

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

当结果是复杂计算时,避免使用类型推断,并尝试将复杂计算分解为qazxsw poi语句


12
投票

当文件不是Target的成员时,可能会发生这种情况。打开自动完成功能不起作用的文件,并显示Xcode右上角的“实用工具”选项卡(下面的屏幕截图中为蓝色)。 let this = smallerOperation

Screenshot of Xcode top right view buttons

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


6
投票

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


5
投票

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

来自axel的Screenshot of Xcode Target Membership options帮助我解决了问题。

无论如何,我要描述一下:

  1. 单击鼠标右键单击并打开This answer,转到YourProject.xcodeproj
  2. Show Package Contents并删除你的xcuserdata

如果您还有youruser.xcuserdatad(如果您已安装任何pod),则执行步骤3和4,如果没有,则跳过步骤3和4:

  1. 单击鼠标右键单击并打开xcworkspace,转到YourProject.xcworkspace
  2. Show Package Contents并删除你的xcuserdata
  3. 退出Xcode
  4. 使用终端删除派生数据:

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

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

youruser.xcuserdatad


4
投票

请尝试这样做:

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

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


2
投票

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

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


2
投票

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

  1. 删除问题文件(删除参考)
  2. 清洁和建设
  3. 将文件添加回项目(我没有检查测试目标)
  4. 再建一次

最后,在尝试了所有内容后3小时 - 自动完成工作正常。

© www.soinside.com 2019 - 2024. All rights reserved.