Ich habe ein Problem mit Xcode, bei dem der Fehler "Source Kit Service Terminated" auftritt und alle Syntaxhervorhebungen und Code-Vervollständigungen in Swift verschwunden sind. Wie kann ich das beheben?
Hier ist ein Beispielbild:
Ich habe ein Problem mit Xcode, bei dem der Fehler "Source Kit Service Terminated" auftritt und alle Syntaxhervorhebungen und Code-Vervollständigungen in Swift verschwunden sind. Wie kann ich das beheben?
Hier ist ein Beispielbild:
Antworten:
Die Antwort auf meine (Xcode6-Beta7) war einfach, den Ordner Abgeleitete Daten zu löschen.
Preferences > Locations > Derived Data > click the arrow to open in Finder > trash it.
Hoffe das hilft jemandem. Es gibt offensichtlich viele Gründe, warum dieser Absturz auftreten kann.
Ich glaube, ich habe eine allgemeinere Lösung gefunden. Im Folgenden sind die Schritte aufgeführt, mit denen ich Xcode dazu ermutigt habe, den SourceKitService Terminated
Fehler nicht zu erzeugen .
Error running playground: Failed prepare for communication with playground.
siehe dieses Bild auf Twitter) .OS X
auf wechseln würde iOS
, würde ich einen weiteren Fehler erhalten (diesen habe ich leider nicht aufgeschrieben).SourceKitService Terminated
Problem in diesem Thread angezeigt .IDEPlaygroundDocument: Error encountered running playground
com.apple.CoreSimulator.CoreSimulatorService[3952]: The runtime for the selected device is not installed.
Wenn Sie nur ein Problem im Kontext eines Swift-Projekts haben, versuchen Sie dies zuerst alleine. Wenn dies nicht funktioniert, führen Sie alle Schritte weiter unten aus.
Der langwierigere und kompliziertere Prozess. (Die ersten 3 Schritte sind nicht sicher hilfreich, aber ich habe sie gemacht und sie hier aufgezeichnet.)
OS X
zu keine Probleme mehr verursachen iOS
.Es scheint, dass das Problem darin besteht, dass Xcode6 den Simulator nicht richtig finden und keine Verbindung zum Simulator herstellen kann. Ich konnte nicht feststellen, warum dies der Fall ist, aber dies hat mir ermöglicht, mich mit Swift weiterzuentwickeln. Dies hat möglicherweise damit zu tun, dass sich die Simulator-Binärdateien scheinbar verschoben haben .
Sie müssen nur den "ModuleCache" löschen. Dies ist eine Art Cache, der von Xcode für die automatische Vervollständigung verwendet wird.
Kopieren Sie die folgende Zeile und fügen Sie sie in das Terminal ein:
rm -rf ~ / Library / Developer / Xcode / DerivedData / ModuleCache
SourceKitService stürzt auf meinem System ab, sobald ich tippe
extension foo {
Ich verwende Xcode 6 Beta 6 und es spielt keine Rolle, ob ich es in eine leere Datei eingebe oder zu einer vorhandenen hinzufüge. Sobald die Quelle einen extension
Block enthält , stürzt sie ab. Dies geschieht auch bei neu erstellten Projekten.
Meine "Lösung" besteht darin, eine Erweiterung der Quellen zu vermeiden, an denen ich gerade arbeite. Ich kommentiere das Ende eines Klassenblocks und den Anfang des Erweiterungsblocks aus. Sobald ich meine Arbeit an der Klasse beendet habe, kommentiere ich sie erneut:
class MyClass {
[... my stuff ...]
//}
//
//extension MyClass {
}
Es begann in meinem Spritekit-Projekt nach dem Einfügen der touchMoved-Funktion. Diese Funktion verwendet erzwungenes Auspacken, was das Problem zu verursachen scheint:
override func touchesMoved(touches: NSSet!, withEvent event: UIEvent!)
Nachdem die Ausrufezeichen entfernt und damit das erzwungene Entpacken gestoppt wurden, stürzte der SourceKitService nicht mehr ab.
Hoffe das hilft!
Ich habe in den Entwicklerforen von Apple eine Lösung gefunden (für die ein Login erforderlich ist, daher erkläre ich dies auch hier).
TLDR : Importieren Sie @protocol
in Ihrem Objective-C keinen Swift-Bridging-Header, der den gleichen Namen wie ein hat @interface
. Beispielsweise verfügt das Facebook SDK sowohl über ein Protokoll als auch über eine Schnittstelle mit dem Namen "FBGraphObject".
Hier ist der Forumsbeitrag:
Das Hinzufügen eines Facebook SDK führt zum Absturz von SourceKitService. Wenn Sie Beta 3 verwenden möchten und Facebook SDK benötigen, besteht eine Lösung, die ich gefunden habe und für mich arbeite, darin, das @protocol FBGraphObject von Facebook SDK umzugestalten und es in @protocol FBGraphObjectProtocol umzubenennen, da es anscheinend auch ein @interface FBGraphObject gibt mag es nicht.
Es ist sicher eine vorübergehende Lösung, nur um Sie funktionsfähig zu halten, und Sie müssen Cocoapods verwenden oder auf andere Weise das Facebook SDK selbst erstellen, anstatt die Framework-Bibliothek zu verwenden.
Vorerst müssen Sie sicherstellen, dass Sie keine widersprüchlichen @ protocol- und @ interface-Deklarationen haben, und dies schließt Bibliotheken von Drittanbietern ein, die Sie möglicherweise verwenden.
Das hat mich heute gekostet, hoffe es hilft!
Gepostet von e.parto am 10. Juli 2014
3.17.1
Verwenden Sie für das Projekt einen anderen Namen als Swift. "Swift" ist reserviert.
UIView
.
Um dies zu beheben, haben Sie möglicherweise ein seltsames Problem mit Ihrem Swift-Code. Zum Beispiel mit mehreren Definitionen von IBOutlets, weil Sie gerade kopiert und eingefügt haben. Normalerweise ist es nur ein Syntaxfehler, der nicht behandelt werden konnte.
Beenden Sie Xcode, wenn es geöffnet ist. Dann vom Terminal laufen:
defaults delete com.apple.dt.Xcode
Dadurch wird Xcode auf die Standardeinstellungen zurückgesetzt. Öffnen Sie Xcode und alles sollte wieder funktionieren.
Für mich (xcode 6.1) war der Grund, dass ich vergessen habe, meine Unterklasse in das Protokoll aufzunehmen.
Zum Beispiel ist das falsch:
protocol SomeProtocol { ... }
class A :NSObject, SomeProtocol {
...
}
class B : A {
...
}
und das ist ok:
protocol SomeProtocol { ... }
class A : NSObject, SomeProtocol {
...
}
class B : A, SomeProtocol {
...
}
Ein Programm, das nur aus diesen beiden Zeilen besteht (möglicherweise falsch in Bezug auf die Swift-Syntax), reicht aus, um hier den Fehler "SourceKitService Terminated" zu verursachen:
var x = 42
println("Hello", x)
Wenn Sie let
anstelle von verwenden, var
verhält sich der Editor wieder normal. Xcode Version 6.0 (6A215l)
println
Habe heute das gleiche Problem, die Sache war mit , ich habe gerade den alten NSLog-Stil ausprobiert, um einen Wert zu drucken:
// something like this
println("value = %@", valueObj)
Die Art und Weise, wie wir Zeichenfolgen schnell zusammenstellen sollten, hat sich vom printf-Stil zum Inline-Stil entwickelt. Jetzt können Sie Ihre Werte wie folgt direkt in die Formatzeichenfolge einbetten:
"Here goes \(YOUR_VARIABLE)"
Für das obige Beispiel lautet die Lösung also:
println("value =\(valueObj)")
Ich hatte das gleiche Problem mit Xcode6 Beta 3 für ein in Beta 2 erstelltes Projekt.
Dies lag an neuen Änderungen in der schnellen Sprache, dh der Syntax der Array-Deklaration.
Überprüfen Sie den betroffenen Code aufgrund von Änderungen in Beta 3.
Eines der Beispiele in meinem Fall war:
Ich musste mich ändern:
var tabBarController : UITabBarController = self.window?.rootViewController as UITabBarController;
zu
var tabBarController : UITabBarController = self.window!.rootViewController as UITabBarController
Schlussfolgerung: Es sieht so aus, als ob ein Fehler im Quellcode vorliegt. Unter bestimmten Umständen wird dieser Fehler von Xcode erzeugt.
Lösung bis der Fehler behoben ist: Manuell auf Fehler prüfen :)
Viel Glück!
Die Lösung für mich war zufällig den Simulator zu wechseln. Ich habe das iPhone 5S für meinen Simulator verwendet und als ich es auf das iPhone 5 umgestellt habe, hat alles perfekt funktioniert. Hoffentlich wird eine zukünftige Version das Problem insgesamt beheben.
Ich glaube, ich habe einen (wie es wahrscheinlich viele gibt) der Gründe herausgefunden, warum dies auftritt.
In meinem Fall habe ich Objective-C-Dateien über den Bridging-Header importiert, der eine der folgenden Bedingungen erfüllt hat:
Das Beheben der App-Ziele in den Objective-C-Dateien ODER das Entfernen des Imports dieser Datei (en) im Bridging-Header insgesamt scheint das Problem zu beheben.
Zu Ihrer Information - Wenn Sie das Ziel von Header-Dateien (.h) festlegen müssen, für die keine Implementierungsdatei (.m) vorhanden ist, können Sie die folgenden einfachen Schritte ausführen: Die Sichtbarkeit der Zielmitgliedschaft in Xcode 4.5 kann nicht geändert werden
Um hier noch eine mögliche Lösung hinzuzufügen, hatte ich versehentlich eine Klasse var mit demselben Namen wie ihr Typ benannt:
class var Settings:Settings {
get { return classVarWorkAround.settings }
}
Dies wird SourceKit mit Sicherheit zum Absturz bringen. Dummer Syntaxfehler, aber falls jemand anderes den gleichen Fehler macht.
Edit: auch laut @Portland Runner:
Wenn Sie den Rückgabetyp auf den Funktionsnamen setzen, wird der Fehler angezeigt.
func foo() ->foo{}
func foo() ->foo{}
(Fühlen Sie sich frei, es in Ihre Antwort aufzunehmen)
Wenn dieser Fehler auftritt, kommentieren Sie einfach den letzten / zuletzt geschriebenen Code aus und warten Sie eine Weile. Die Syntaxhervorhebung sollte wieder angezeigt werden. So arbeite ich um das Problem herum.
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)
}
An Apple gemeldet (# 17266321):
Einzelheiten:
Zusammenfassung: Wenn wir versuchen, ein Wörterbuch mit dem Wert als Array zu drucken, wird immer wieder ein Popup mit der Meldung "SourceKit beendet. Editorfunktionalität zeitlich begrenzt" angezeigt. Xcode Friert die Kontexterkennung ein und verliert sie, wodurch der Text geschwärzt wird.
Schritte zum Reproduzieren: 1. Erstellen Sie ein Array als - "var iOSHistoryArray = [" iOS6 "," iOS7 "," iOS8 ",]"
Erstellen Sie ein Wörterbuch als - "var MacOSYosemiteFeatures: Dictionary = [" Gerät ": iOSHistoryArray]".
Drucken Sie das Wörterbuch als - "println (" Wörterbuch mit Array-Wert:% @ \ n ", MacOSYosemiteFeatures)" (<< - Culprit - >>)
In Schritt 3 wird das Problem kommentiert, wodurch der Xcode wieder funktionsfähig wird.
Erwartete Ergebnisse: Xcode sollte normal funktionieren.
Tatsächliche Ergebnisse: Xcode funktioniert nicht mehr, verliert die Kontexterkennung (alle Schriftarten gehen verloren und der gesamte Text wird schwarz), der gesamte Xcode wird inaktiv.
Version: Version 6.0 (6A215l)
Versuch es:
Es gibt einen Fehler im Swift-Compiler / Indexer. Einige Zeilen in Ihrem Code machen es schwierig. Sie müssen Ihren Code mit einem anderen Texteditor bearbeiten, um die fehlerhaften Zeilen auskommentieren zu können, bevor Sie das Projekt mit Xcode öffnen können. Wenn Sie keine Ahnung haben, wo das Problem liegt, kommentieren Sie Ihren gesamten Code aus. Sobald Sie das Projekt geöffnet haben, können Sie nach und nach Code zurückbringen, bis der Anstieg der CPU-Aktivität Ihnen anzeigt, dass Sie das Problem gefunden haben.
Problem:
Mein Fall: Installiertes Beta 3, nur OSX-Projekt, eine Datei hat festgestellt, dass der Fehler "Operator mit halb geschlossenem Bereich von .. auf .. <geändert wurde". Das Popup wird angezeigt und die Code-Hervorhebung schlägt fehl.
Lösung:
Gehen Sie in xcode zu Ihrer Menüleiste >> Fenster >> Geräte (Umschalt + cmd + 2). Ein neues Fenster wird geöffnet. Fügen Sie unten links einen neuen Simulator hinzu, insbesondere einen, der unter iOS 8.0 ausgeführt wird, zur vorhandenen Listenbearbeitung : Möglicherweise müssen Sie xcode neu starten
Aktualisierung: http://www.reddit.com/r/swift/comments/2bznfo/error_running_playground_unable_to_find_suitable/
Ich hatte den gleichen Fehler mit dem verschachtelten Objective-C ++ - Projekt, das jetzt Framework mit Swift-Code enthält. Um dieses Problem zu beheben, musste ich das Framework explizit erstellen. Sobald ich das getan habe, ist das Problem weg und kommt nicht zurück;)
Immer noch mit xcode 6 Version 6.0 (6A313)
Stürzt ab
ps: brandneuer mac mini, kein vorheriger xcode installiert, nichts exotisches. Nur ein Beta-Produkt, nehme ich an.
Xcode 6.1 Beta 3:
Sobald Sie einen nicht privaten Typalias (z. B. typealias Foo = Int
) in einer Swift-Datei definieren und den Buchstaben c
in eine andere Datei eingeben, stürzt der SourceKitService ab.
Die Lösung besteht entweder darin, auf die Verwendung von Typ-Aliasen zu verzichten, auf die nächste Beta-Version zu warten oder Ihre Typ-Aliase in Klassendefinitionen zu verpacken:
public class DummyClass {
public typealias Foo = String
}
und benutze es so:
var myVar:DummyClass.Foo?