Swift Xcode索引冻结或慢速

leo*_*ard 99 indexing swift osx-yosemite aws-sdk xcode6.1

也许这只是我遇到这样一个恼人的"功能":

从Xcode 6.0.1升级到Xcode 6.1后,情况发生了变化.Xcode 6.1永远索引项目或编译源文件.该项目不是一个巨大的项目.它只包含工作区中的一堆Swift文件和AWS SDK 2.0 Cocoapods.我不认为它应该阻止整个索引和编译顺利.我尝试了一些aws-sdk-ios-samples,只是为了看看Xcode 6.1如何在它们上工作,它最终在同一个永远等待.

到目前为止我尝试了哪些解决方案:

  1. 在管理器中删除"派生数据",然后重新打开和工作区.(未修复)
  2. .xcodeproj文件中的"显示包内容"并删除.xcworkspace,如(Xcode 4 - 性能缓慢)

不幸的是,他们都没有工作.

PS也许我应该尝试重新创建项目?我的电脑设置:MacBook Pro(Retina,13英寸,2014年中),内存8 GB 1600 MHz DDR3,优胜美地.(我认为这足以运行这个小项目.)

小智 72

我尝试了上面的许多建议,包括拆分文件,安装Xcode 6.2 beta和打破字符串连接语句.对我来说最后做的是将我用于测试数据的字典数组声明分成多个.append语句.

// This causes indexing/building to hang...
var test = [ [ "a": false, "b": "c" ],
             [ "a": false, "b": "c" ],
             [ "a": false, "b": "c" ],
             [ "a": false, "b": "c" ],
             [ "a": false, "b": "c" ],
             [ "a": false, "b": "c" ] ]

// This works fine.
var test = [ [ "a": false, "b": "c" ] ]
test.append([ "a": false, "b": "c" ])
test.append([ "a": false, "b": "c" ])
test.append([ "a": false, "b": "c" ])
test.append([ "a": false, "b": "c" ])
test.append([ "a": false, "b": "c" ])
Run Code Online (Sandbox Code Playgroud)

此外,对于它的价值,这个数组中的第6个条目是导致我的问题的原因; 五件作品就好了.

  • 我在Xcode 7.3中体验过这个,其中包含229个项目的数组文字.我没有打破它,而是添加了一个类型声明,而不是让Swift推断出类型.在我这样做之后,它起作用了. (4认同)

Rem*_*lia 34

对我来说唯一可行的解​​决方案是删除所有派生数据(不仅是当前项目,只是清理整个文件夹),然后重新启动Xcode.

  1. 在Xcode中打开文件/首选项

  2. 单击弹出窗口最右侧的位置

  3. 单击"/Users/Mac/Library/Developer/Xcode/DerivedData"旁边的小箭头图标,将您带到包含DerivedData文件夹的Xcode文件夹(其中包含以前项目中的所有派生数据) .)

  4. 删除DerivedData文件夹


Mic*_*nis 11

你在使用CocoaPods吗?我今天早些时候遇到了同样的问题.(使用xCode 6.1.1)

要解决这个问题,我删除了一切~/Library/Developer/Xcode/DerivedData,将Pods在我的项目目录文件夹,和<project>.xcworkspace.

然后我打开终端,导航到我的项目目录,然后pod install再次运行.


Bad*_*Cat 8

今天有同样的问题.Xcode 6.3.2,中型Swift项目.有一次它开始索引,它永远不会完成索引.导致这种情况的代码是[String:[String]]类型的字典,因此字符串键dict以字符串数组作为值.我有两个带有从A到Z的键,这26个条目中的每一个都包含一个包含5到10个字符串的字符串数组.

清除派生数据没有帮助.只评论那些决定使它再次出现.

老实说,这太荒谬了!Apple需要修复Xcode!编译Swift项目时已经非常慢了,但是像这样的bug是一个显而易见的问题.我不能正确地完成我的工作!


And*_*son 6

对于那些仍然遇到这个问题的人来说,这是一个我喜欢的解决方法,它可以防止您逐个输入对象:

// instead of this, which freezes indexing
let keys = [keyQ, keyW, keyE, keyR, keyT, keyY, ... keyM]    

// and instead of this, which is ugly & lengthy
var keys = [KeyboardKey]()
keys.append(keyQ)
keys.append(keyW)
...
keys.append(keyM)

// use this:
var keys = [KeyboardKey]()
keys.appendContentsOf([keyQ, keyW, keyE, keyR, keyT, keyY, ... keyM])
Run Code Online (Sandbox Code Playgroud)


Gme*_*er4 5

对我来说,我尝试了以上所有方法都没有成功;但我所要做的就是删除派生数据文件夹,然后打开另一个随机项目,等待它建立索引,现在我的原始(故障)项目可以正常工作了!

帮助开发世界的苹果,让你的 swift 编译器开源——这样我们就不会因为你的无能而受阻。


Ada*_*137 2

升级到 6.1 后我也遇到了同样的问题。Xcode 会在编译或索引时卡住,而不生成特定的错误消息。

通过将 swift 文件中的一些较长表达式分解为多个较短表达式,该问题最终得到解决。我的程序的一部分组合了许多不同的字符串变量以形成更长的字符串。尝试将它们组合在一个表达式中并使用加法赋值运算符都失败了。我能够通过执行类似于以下内容(简化)的操作来使其工作:

var a = "Hello"
var b = " "
var c = "World"
var d = "!"
var partA = a + b
var partB = c + d
var result = partA + partB
Run Code Online (Sandbox Code Playgroud)

我从以前的 Xcode 版本中多次收到以下错误中得到了这个想法:“表达式太复杂,无法在合理的时间内解决;考虑将表达式分解为不同的子表达式。”

希望这可以帮助