我在Xcode中遇到了一个问题,错误“源套件服务终止”正在弹出,所有语法高亮显示和代码完成都在Swift中消失了。我该如何解决这个问题?

下面是一个示例图像:


当前回答

将部署目标更改为iOS 8.0对我来说很有效。我知道有人说将它移动到<=7.1可以工作,但这个问题似乎来自多个来源,所以这个替代方案可能可以工作。

其他回答

当此错误开始弹出时,只需注释掉您编写的最后/最近的一段代码并等待一段时间。语法高亮显示应该会重新出现。这就是我解决这个问题的方法。

    func someFunc() -> (Int?, Int?, Int?) {
     var retVal1:Int? = nil
     var retVal2:Int? = nil
     var retVal3:Int? = nil

     //some other code

     //commenting out the line below helped me
     //(retVal1, retVal2, retVal3)
     return (retVal1, retVal2, retVal3)
    }

问题:

如果源代码中有错误,可能会弹出“SourceKitService Terminated”,代码高亮显示停止工作。它可能发生,也可能不发生,当它发生在多种不同的条件下。

我的案例:安装beta 3, OSX仅项目,一个文件检测到“半封闭范围操作符已从..对. .<”错误。弹出窗口开始出现,代码高亮显示开始失败。

解决方案:

修复Xcode检测到的错误 在Navigator中更改为不同的.swift,回到原来的 语法高亮显示重新出现,“SourceKitService Terminated”弹出

在项目中使用Swift以外的其他名称。“Swift”是保留的。

在我的spritekit项目中插入touchesMoved-function后,这种情况开始发生。这个函数使用强制展开,这似乎导致了问题:

override func touchesMoved(touches: NSSet!, withEvent event: UIEvent!)

在删除感叹号并停止强制打开后,SourceKitService停止了崩溃。

希望这能有所帮助!

Xcode 6.1 Beta 3:

一旦你在一个Swift文件中定义了一个非私有类型别名(例如typealias Foo = Int),在另一个文件中输入字母c, SourceKitService就会崩溃。

解决方案是要么放弃使用类型别名,等待下一个beta版本,要么将类型别名包装在类定义中:

public class DummyClass {
    public typealias Foo = String
}

像这样使用它:

var myVar:DummyClass.Foo?