SourceKitService已终止

Ton*_*ony 241 xcode ios swift sourcekitservice

我遇到了Xcode的问题,其中弹出了"Source Kit Service Terminated"错误,所有语法高亮和代码完成都在Swift中消失了.我怎样才能解决这个问题?

这是一个示例图像:

在此输入图像描述

tob*_*fin 113

我的答案(Xcode6-Beta7)只是删除Derived Data文件夹.

Preferences > Locations > Derived Data > click the arrow to open in Finder > trash it.

希望这有助于某人.显然有很多原因导致崩溃.

  • 这固定了大约10分钟,然后我改变了变量的名称,它又回来了! (7认同)
  • 似乎这解决了问题,但也使用Xcode 6.1 GM. (4认同)
  • 没有解决我的问题 (2认同)

And*_*deh 35

我相信我可能找到了更通用的解决方案.以下是我用来鼓励Xcode不产生SourceKitService Terminated错误的步骤.


我有的症状:

  • 当我开始一个新的游乐场时,我会收到一个关于无法与游乐场交流的错误(Error running playground: Failed prepare for communication with playground.在推特上查看此图片.
  • 当我将操场切换OS XiOS,我会收到另一个错误(不幸的是我没有写下那个).
  • 当我开始输入基于iOS的Swift项目,试图在任何UIKit特定类上使用代码完成/智能感知时,我会SourceKitService Terminated在这个帖子中收到问题.

调试过程:

  • 我开始通过谷歌搜索SourceKitService,这很少.
  • 然后我在使用Xcode时开始监控Console.app.这显示了几个错误:
    • IDEPlaygroundDocument: Error encountered running playground
    • com.apple.CoreSimulator.CoreSimulatorService[3952]: The runtime for the selected device is not installed.

我做了什么来纠正这个问题.

如果您只是在Swift项目的上下文中遇到问题,请先单独尝试.如果这不起作用,请尝试下面的所有步骤.

  1. 打开项目并将目标的部署目标更改为<= 7.1.

更漫长和更复杂的过程.(前三个步骤肯定没有用,但我做了它们,所以在这里记录它们)

  1. 完全删除系统上的所有Xcode副本.
  2. 重启你的电脑.
  3. 仅重新安装Xcode6-beta.
  4. 确认您在游乐场和/或项目中仍然存在问题.
  5. 打开iOS模拟器.
  6. 硬件 - >设备 - >管理设备
  7. 删除所有设备.
  8. 重新创建所需的所有设备.我将iOS版本附加到名称的末尾,只是因为.
  9. 重启Xcode和模拟器.
  10. 确认至少从操场切换时不再抛出的问题OS XiOS.
  11. 打开项目并将目标的部署目标更改为<= 7.1.

分析

看来问题是Xcode6无法正确查找和连接到模拟器.我无法确定为什么会出现这种情况,但这让我可以继续使用Swift进行开发.这可能与模拟器二进制文件似乎已移动的事实有关.

  • 有类似的问题:"未安装所选设备的运行时." 在运行iPhonesimulator游乐场时出错.步骤5.~9.解决了这个问题. (2认同)
  • 谢谢你们这些步骤.我将部署目标从7.0调整到7.1,这似乎已经解决了这个问题. (2认同)
  • 将部署目标设置为7.0对我有用. (2认同)

Dav*_*ias 32

您只需要删除"ModuleCache",这是Xcode用于自动完成的某种缓存.

复制并粘贴终端中的以下行:

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


Kla*_*aas 27

输入后,SourceKitService在我的系统上崩溃

extension foo {
Run Code Online (Sandbox Code Playgroud)

我正在使用Xcode 6 beta 6,如果我将其键入一个空文件或将其添加到现有文件中并不重要.一旦源包含一个extension块,它就会崩溃.甚至在新创建的项目中也会发生

我的"解决方案"是避免扩展我目前正在处理的来源.我注释掉了类块的结尾和扩展块的开头.我一完成课后的工作,就再次评论他们:

class MyClass {

    [... my stuff ...]

//}
//
//extension MyClass {

}
Run Code Online (Sandbox Code Playgroud)

  • 对我来说也是一个巨大的问题.我已经开始将扩展移动到他们自己的文件,在类中编写代码,将它们复制粘贴到扩展名.这种偷偷摸摸的方式有点莫名其妙. (2认同)

小智 9

插入touchesMoved-function后,它开始在我的spritekit项目中发生.此函数使用强制解包,这似乎导致问题:

override func touchesMoved(touches: NSSet!, withEvent event: UIEvent!)
Run Code Online (Sandbox Code Playgroud)

删除感叹号并因此停止强制解包后,SourceKitService停止崩溃.

希望这可以帮助!


ale*_*son 9

我在Apple的开发者论坛上找到了一个解决方案(需要登录,所以我也在这里解释).

TLDR:不要@protocol在Objective-C中导入一个名为与a相同的Swift桥接头@interface.例如,Facebook SDK具有协议和名为"FBGraphObject"的接口.

这是论坛帖子:

添加Facebook SDK会导致SourceKitService崩溃.如果你想使用beta 3并且你需要Facebook SDK,我找到并且正在为我工​​作的一个解决方法是重构Facebook SDK的@protocol FBGraphObject并将其重命名为@protocol FBGraphObjectProtocol,因为@interface FBGraphObject也存在并且显然是SourceKit不喜欢它.

它肯定是一个临时解决方案,只是为了让你的功能,你将不得不使用Cocoapods或自己构建Facebook SDK,而不是使用框架库.

目前,您需要确保没有冲突的@protocol和@interface声明,并且包括您可能正在使用的第三方库.

今天这让我付出了代价,希望它有所帮助


20147月10日e.parto发布


Mar*_*anu 8

为项目使用除Swift之外的其他名称."斯威夫特"是保留的.

  • 我也收到了这个警告,但是我的项目名称根本不包括Swift这个词,所以这不是"解决方案",也许只是"一个"解决方案.不,我还没弄清楚我的问题是什么. (10认同)
  • 这不是问题的原因.我不知道为什么这个被投票赞成. (4认同)

Car*_*ine 8

我在Xcode 6 Beta 3中每隔几秒就遇到这个问题,即使在全新的项目中也是如此.我将部署目标从8.0更改为7.1并且已停止.


dev*_*oul 5

你的项目命名了Swift吗?看到那条消息,构建也会失败(<unknown>:0: error: module name "Swift" is reserved for the standard library).尝试使用其他项目名称,例如SwiftTest.它会工作.