我在Xcode上遇到问题,错误“ Source Kit Service Terminated”弹出,并且所有语法突出显示和代码完成在Swift中都消失了。我怎样才能解决这个问题?
这是一个示例图像:
我在Xcode上遇到问题,错误“ Source Kit Service Terminated”弹出,并且所有语法突出显示和代码完成在Swift中都消失了。我怎样才能解决这个问题?
这是一个示例图像:
Answers:
我的答案(Xcode6-Beta7)只是删除Derived Data文件夹。
Preferences > Locations > Derived Data > click the arrow to open in Finder > trash it.
希望这对某人有帮助。显然有很多原因可以导致此崩溃。
我相信我可能已经找到了更通用的解决方案。以下是我用来鼓励Xcode不产生SourceKitService Terminated
错误的步骤。
Error running playground: Failed prepare for communication with playground.
请参见twitter上的此图像)。OS X
到时iOS
,我会收到另一个错误(不幸的是我没有写下那个错误)。SourceKitService Terminated
在此线程中收到问题。IDEPlaygroundDocument: Error encountered running playground
com.apple.CoreSimulator.CoreSimulatorService[3952]: The runtime for the selected device is not installed.
如果您只是在Swift项目的上下文中遇到问题,请先尝试单独解决。如果这不起作用,请尝试下面的所有步骤。
更冗长和复杂的过程。(前3个步骤肯定没有帮助,但是我做到了,因此请在此处记录下来)
OS X
到时,请确保至少游乐场不再引发问题iOS
。看来问题出在Xcode6无法正确找到并连接到模拟器。我无法确定为什么会这样,但这使我可以继续使用Swift进行开发。这可能与模拟器二进制文件似乎已经移动的事实有关。
您只需要删除“ ModuleCache”,这是Xcode用于自动完成的某种缓存。
将以下行复制并粘贴到终端中:
rm -rf〜/库/开发人员/ Xcode / DerivedData / ModuleCache
键入后,SourceKitService在我的系统上崩溃
extension foo {
我正在使用Xcode 6 beta 6,无论我将其键入一个空文件还是将其添加到现有文件中都没有关系。源包含一个extension
块时,它将立即崩溃。即使在新创建的项目上也会发生这种情况。
我的“解决方案”是避免扩展当前正在使用的源代码。我注释掉一个类块的结尾和扩展块的开头。一旦完成我在课堂上的工作,我就再次评论他们:
class MyClass {
[... my stuff ...]
//}
//
//extension MyClass {
}
插入touchesMoved函数后,它开始在我的spritekit项目中发生。此函数使用强制展开,这似乎会引起问题:
override func touchesMoved(touches: NSSet!, withEvent event: UIEvent!)
删除感叹号并因此停止强制展开后,SourceKitService停止崩溃。
希望这可以帮助!
我在Apple的开发人员论坛上找到了一种解决方案(需要登录,因此我也将在此处进行说明)。
TLDR:请勿@protocol
在Objective-C中将与相同的导入到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声明,并且其中包括您可能正在使用的第三方库。
今天这让我付出了代价,希望对您有所帮助!
由e.parto发表于2014年7月10日
3.17.1
在项目中使用Swift之外的其他名称。“快速”保留。
UIView
。
对我来说(xcode 6.1)的原因是我忘了将子类用于协议。
例如,这是错误的:
protocol SomeProtocol { ... }
class A :NSObject, SomeProtocol {
...
}
class B : A {
...
}
没关系:
protocol SomeProtocol { ... }
class A : NSObject, SomeProtocol {
...
}
class B : A, SomeProtocol {
...
}
仅由这两行组成的程序(在Swift语法上可能是错误的)足以在此处引起“ SourceKitService Terminated”错误:
var x = 42
println("Hello", x)
使用let
代替var
使编辑器再次正常运行。Xcode 6.0版(6A215l)
今天遇到了同样的问题,问题出在println
,我只是尝试使用旧的NSLog样式来打印值:
// something like this
println("value = %@", valueObj)
我们如何快速组成字符串的方式已经从printf样式演变为嵌入式样式,因此现在您将值直接嵌入到格式字符串中,如下所示:
"Here goes \(YOUR_VARIABLE)"
因此,对于上面的示例,解决方案是:
println("value =\(valueObj)")
对于在beta 2中创建的项目,我在Xcode6 beta 3中存在相同的问题。
这是因为快速语言(即数组声明语法)发生了新的重大变化。
检查由于Beta 3中的重大更改而导致的影响的代码。
我的例子之一是:
我不得不改变:
var tabBarController : UITabBarController = self.window?.rootViewController as UITabBarController;
至
var tabBarController : UITabBarController = self.window!.rootViewController as UITabBarController
结论:好像源代码中有错误,在某些情况下,此错误是Xcode产生的。
修复错误之前的解决方法:手动检查错误:)
祝好运!
对我来说,解决方案刚好是更换模拟器。我在模拟器上使用的是iPhone 5S,当我将其切换到iPhone 5时,一切运行正常。希望将来的版本将完全修复它。
我想我已经找出了发生这种情况的原因之一(可能有很多)。
就我而言,我是通过具有以下其中一项的Bridging Header导入Objective-C文件的:
在Objective-C文件上修复应用程序目标,或者一起删除桥接头中那些文件的导入,似乎可以解决此问题。
仅供参考-如果您需要设置没有实现(.m)文件的标头(.h)文件的目标,则可以按照以下简单步骤操作:无法在Xcode 4.5中更改目标成员资格可见性
只是为了在这里添加一个潜在的解决方案,我不小心将一个名为var的类命名为与它的类型相同的名称:
class var Settings:Settings {
get { return classVarWorkAround.settings }
}
当然,这会使SourceKit崩溃。愚蠢的语法错误,但万一其他人犯了同样的错误。
编辑:也根据@Portland Runner:
同样,如果将返回类型设置为func名称,则会收到错误消息。
func foo() ->foo{}
func foo() ->foo{}
(随时将其添加到您的答案中)
当此错误开始弹出时,只需注释掉您编写的最后/最近的一段代码,然后等待一段时间。语法高亮应重新出现。这就是我解决问题的方法。
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)
}
向Apple报告(#17266321):
细节:
摘要:如果我们尝试将值作为数组的字典进行打印,则会弹出一个弹出窗口,提示“ SourceKit已终止。编辑器功能受时间限制”。Xcode冻结并失去上下文识别,导致文本变黑。
重现步骤:1.创建一个数组-“ var iOSHistoryArray = [” iOS6“,” iOS7“,” iOS8“,]”
将字典创建为-“ var MacOSYosemiteFeatures:Dictionary = [” Device“:iOSHistoryArray]”。
将字典打印为-“ println(”包含数组值的字典:%@ \ n“,MacOSYosemiteFeatures)” (<<-Culprit->>)
步骤3导致问题注释,这使Xcode再次起作用。
预期结果:Xcode应该正常运行。
实际结果:Xcode失效,失去上下文识别(所有字体丢失,所有文本变为纯黑色),整个Xcode变为非活动状态。
版本:6.0版(6A215l)
试试吧:
Swift编译器/索引器中有一个错误。代码中的某些行给它带来了困难。在使用Xcode打开该项目之前,您必须使用其他文本编辑器编辑代码以注释掉有问题的行。如果您不知道问题出在哪里,请注释掉所有代码。打开项目后,您可以一点一点地开始带回代码,直到CPU活动增加表明您已找到问题为止。
问题:
我的情况:安装了beta 3,仅OSX项目,一个文件检测到“半封闭范围运算符已从..更改为.. <”错误。弹出窗口开始出现,代码突出显示开始失败。
解:
在xcode中,转到菜单栏>>窗口>>设备(shift + cmd + 2),将弹出一个新窗口,并在左下方添加一个新模拟器,特别是在现有列表上运行iOS 8.0的模拟器:您可能需要重新启动xcode
参考:http : //www.reddit.com/r/swift/comments/2bznfo/error_running_playground_unable_to_find_suitable/
嵌套的Objective-C ++项目出现了相同的错误,该项目现在包括带有Swift代码的Framework。为了解决此问题,我必须显式构建框架。一旦我做到了,这个问题就消失了,也不会回来;)