wake-up-neo.com

SourceKitService wurde beendet

Ich habe ein Problem mit Xcode, bei dem der Fehler "Source Kit Service Terminated" auftaucht und alle Syntaxhervorhebungen und Code-Vervollständigungen in Swift verschwunden sind. Wie kann ich das beheben?

Hier ist ein Beispielbild:

enter image description here

241
Tony

Die Antwort auf meine Frage (Xcode6-Beta7) bestand einfach darin, 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.

112
tobygriffin

Ich glaube, ich habe vielleicht eine allgemeinere Lösung gefunden. Im Folgenden sind die Schritte aufgeführt, die ich ausgeführt habe, um Xcode anzuhalten, den Fehler SourceKitService Terminated Nicht zu erzeugen.


Die Symptome, die ich hatte:

  • Wenn ich einen neuen Spielplatz eröffnen würde, würde ich eine Fehlermeldung erhalten, dass ich nicht mit dem Spielplatz kommunizieren kann (Error running playground: Failed prepare for communication with playground. Siehe dieses Bild auf Twitter .
  • Wenn ich den Spielplatz von OS X Auf iOS umstellen würde, würde ich eine weitere Fehlermeldung erhalten (diese habe ich leider nicht aufgeschrieben).
  • Wenn ich mit der Eingabe eines iOS-basierten Swift) - Projekts beginne und versuche, Code-Vervollständigung/Intellisense für eine bestimmte UIKit-Klasse zu verwenden, erhalte ich in diesem Thread das Problem SourceKitService Terminated.

Debugging-Prozess:

  • Ich habe mich zunächst bei Google nach SourceKitService umgesehen, aber das hat sehr wenig gebracht.
  • Ich fing dann an, Console.app zu überwachen, während ich Xcode verwendete. Dies zeigte ein paar Fehler:
    • IDEPlaygroundDocument: Error encountered running playground
    • com.Apple.CoreSimulator.CoreSimulatorService[3952]: The runtime for the selected device is not installed.

Was ich getan habe, um dieses Problem zu beheben.

Wenn Sie nur ein Problem im Kontext eines Swift Projektes haben, versuchen Sie dies zuerst alleine. Wenn das nicht funktioniert, versuchen Sie alle Schritte weiter unten.

  1. Öffnen Sie Ihr Projekt und ändern Sie das Bereitstellungsziel des Ziels in etwas <= 7.1.

Der langwierigere und aufwändigere Prozess. (Die ersten drei Schritte sind nicht unbedingt hilfreich, aber ich habe sie durchgeführt und sie daher hier aufgezeichnet.)

  1. Löschen Sie alle Kopien von Xcode auf Ihrem System vollständig.
  2. Starte deinen Computer neu.
  3. Installieren Sie nur Xcode6-beta neu.
  4. Stellen Sie sicher, dass das Problem bei Spielplatz und/oder Projekten weiterhin besteht.
  5. Öffnen Sie den iOS-Simulator.
  6. Hardware -> Gerät -> Geräte verwalten
  7. Entfernen Sie alle Geräte.
  8. Erstellen Sie alle gewünschten Geräte neu. Ich habe die iOS-Version an das Ende des Namens angehängt, nur weil.
  9. Starten Sie Xcode und den Simulator neu.
  10. Stellen Sie sicher, dass zumindest auf Spielplätzen beim Wechsel von OS X Zu iOS keine Probleme mehr auftreten.
  11. Öffnen Sie Ihr Projekt und ändern Sie das Bereitstellungsziel des Ziels in etwas <= 7.1.

Analyse

Es scheint, dass das Problem darin besteht, dass Xcode6 den Simulator nicht richtig finden und keine Verbindung herstellen kann. Ich konnte nicht feststellen, warum dies der Fall ist, aber dies hat es mir ermöglicht, mich mit Swift weiterzuentwickeln. Dies hat möglicherweise damit zu tun, dass die Simulator-Binärdateien anscheinend verschoben .

35

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 in das Terminal und fügen Sie sie ein:

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

32
David Attias

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 {

}
27
Klaas

Ich habe eine Lösung in den Entwicklerforen von Apple gefunden (für die eine Anmeldung erforderlich ist, daher erkläre ich dies auch hier).

[~ # ~] tldr [~ # ~] : Importiere kein @protocol in Ihrem Objective-C zu Swift Bridging-Header, der den gleichen Namen hat wie ein @interface. Das Facebook SDK verfügt beispielsweise über ein Protokoll und eine Schnittstelle mit dem Namen "FBGraphObject".

Hier ist der Forumsbeitrag:

Das Hinzufügen von Facebook SDK führt zum Absturz von SourceKitService. Wenn Sie Beta 3 verwenden möchten und Facebook SDK benötigen, besteht eine Lösung darin, das @protocol FBGraphObject von Facebook SDK umzugestalten und es in @protocol FBGraphObjectProtocol als @interface FBGraphObject umzubenennen, und anscheinend existiert auch SourceKit mag es nicht.

Es ist sicher eine vorübergehende Lösung, 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 keine Konflikte zwischen @protocol- und @interface-Deklarationen vorliegen und dass Sie möglicherweise Bibliotheken von Drittanbietern verwenden.

Das hat mich heute gekostet, hoffe es hilft!


Gepostet von e.parto am 10. Juli 2014

9
aleclarson

Es begann in meinem Spritekit-Projekt, nachdem die touchesMoved-Funktion eingefügt wurde. Diese Funktion verwendet das erzwungene Auspacken, was das Problem zu verursachen scheint:

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

Nach dem Entfernen der Ausrufezeichen und dem Stoppen des erzwungenen Auspackens kam es zu einem Absturz des SourceKitService.

Hoffe das hilft!

9
Markus Buhl

Verwenden Sie einen anderen Namen als Swift für das Projekt. "Swift" ist reserviert.

8
Marius Fanu

Ich hatte dieses Problem alle paar Sekunden in Xcode 6 Beta 3 und es wurde sogar in völlig neuen Projekten fortgesetzt. Ich habe das Bereitstellungsziel von 8.0 auf 7.1 geändert und es wurde gestoppt.

8
Caroline

Hat Ihr Projekt den Namen Swift? Wenn diese Meldung angezeigt wird, schlägt auch die Erstellung fehl (<unknown>:0: error: module name "Swift" is reserved for the standard library). Versuchen Sie es mit einem anderen Projektnamen wie SwiftTest. Es würde funktionieren.

5
devxoul

Ich fand heraus, dass das Problem für mich dadurch gelöst wurde, dass die Variablentypen explizit (statisch) eingegeben und nicht abgeleitet wurden.

3
Olshansk

Um dies zu beheben, liegt möglicherweise ein seltsames Problem mit Ihrem Swift) - Code vor. Sie haben beispielsweise mehrere Definitionen von IBOutlets, weil Sie gerade kopiert und eingefügt haben. In der Regel handelt es sich nur um einen Syntaxfehler das konnte nicht gehandhabt werden.

3
Tony

Beenden Sie Xcode, wenn es geöffnet ist. Dann vom Terminal aus laufen:

defaults delete com.Apple.dt.Xcode

Dadurch wird Xcode auf die Standardeinstellungen zurückgesetzt. Öffne Xcode und alles sollte wieder funktionieren.

3
Ross Gibson

Für mich (xcode 6.1) war der Grund, dass ich vergessen habe, meine Unterklasse auf Protokoll umzustellen.

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 {
...
}
2
Ivo Leko

Ich glaube, ich habe einen (da es wahrscheinlich viele gibt) der Gründe dafür herausgefunden.

In meinem Fall habe ich Objective-C-Dateien über den Bridging-Header importiert, die eine der folgenden Bedingungen erfüllen:

  1. In der Implementierungsdatei (.m) für den Objective-C-Import wurde das App-Ziel nicht richtig festgelegt.
  2. Die Objective-C-Datei enthielt nur eine Headerdatei (.h) und keine Implementierungsdatei (.m). (Auch hier denke ich, dass dies Teil des Satzes "Kein richtiges App-Ziel" ist, da Sie nur Ziele in den .m-Dateien und nicht in den .h-Dateien festlegen können)

Das Beheben der App-Ziele in den Objective-C-Dateien OR= Entfernen des Imports dieser Datei (en) im Bridging-Header zusammen scheint das Problem zu beheben.

Zu Ihrer Information - Wenn Sie das Ziel von Header-Dateien (.h) festlegen müssen, die keine Implementierungsdatei (.m) enthalten, können Sie die folgenden einfachen Schritte ausführen: Sichtbarkeit der Zielmitgliedschaft in Xcode 4.5 kann nicht geändert werden

1
JimmyJammed

Ich hatte das gleiche Problem mit Xcode6 Beta 3 für ein Projekt, das in Beta 2 erstellt wurde.

Es war wegen neuer brechender Änderungen in Swift Sprache, d. H. Array-Deklarationssyntax.

Überprüfen Sie den betroffenen Code aufgrund von Änderungen in Beta 3.

http://adcdownload.Apple.com//Developer_Tools/xcode_6_beta_3_lpw27r/xcode_6_beta_3_release_notes__.pdf

Eines der Beispiele in meinem Fall war:

Ich musste wechseln:

var tabBarController : UITabBarController = self.window?.rootViewController as UITabBarController;

zu

var tabBarController : UITabBarController = self.window!.rootViewController as UITabBarController

Fazit: 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: Überprüfen Sie den Fehler manuell:)

Viel Glück!

1
Tejasvi Hegde

Ich fand heraus, dass das Entfernen abgeleiteter Daten vom Terminal das Problem bis zum nächsten Absturz behebt. : S

Es befindet sich unter:/Users/{Benutzername}/Library/Developer/Xcode/DerivedData/{Projektname} - {Zufällige Zeichenfolge}

Ich hoffe das hilft.

1
sang

Habe heute dasselbe Problem, das Problem war mit println, ich habe gerade versucht, den alten NSLog-Stil zu verwenden, um einen Wert zu drucken:

// something like this
println("value = %@", valueObj)

Die Art und Weise, wie wir Zeichenfolgen in Swift) erstellen sollten, hat sich vom printf-Stil zum Inline-Stil entwickelt. Sie binden Ihre Werte jetzt wie folgt direkt in die Formatzeichenfolge ein:

"Here goes \(YOUR_VARIABLE)"

Für das obige Beispiel lautet die Lösung also:

println("value =\(valueObj)")
1
MANIAK_dobrii

Ein Programm, das nur aus diesen beiden Zeilen besteht (möglicherweise in Bezug auf die Syntax Swift=) falsch), reicht aus, um hier den Fehler "SourceKitService Terminated" auszulösen:

var x = 42
println("Hello", x)

Wenn Sie let anstelle von var verwenden, verhält sich der Editor wieder normal. Xcode Version 6.0 (6A215l)

1
Alexander

Um hier eine weitere mögliche Lösung hinzuzufügen, hatte ich versehentlich eine Klasse var mit demselben Namen wie den Typ benannt:

class var Settings:Settings {
        get { return classVarWorkAround.settings }
    }

Dies wird SourceKit sicher zum Absturz bringen. Blöder Syntaxfehler, aber falls jemand 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{}
1
ohhh

Die Lösung für mich war, 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 beheben.

1
Fomentia

Problem:

  • Wenn im Quellcode ein Fehler auftritt, wird möglicherweise das Popup "SourceKitService Terminated" angezeigt und die Code-Hervorhebung funktioniert nicht mehr. Es kann vorkommen oder nicht, wenn es unter verschiedenen Bedingungen geschieht.

Mein Fall: Installierte Beta 3, nur OSX-Projekt, eine Datei hat festgestellt, dass der "Operator für halbgeschlossenen Bereich von .. auf .. <" geändert wurde. Das Popup wird angezeigt und die Code-Hervorhebung schlägt fehl.

Lösung:

  • Fix Fehler von Xcode erkannt
  • Wechseln Sie in Navigator zu einer anderen .Swift, und kehren Sie zum Original zurück
  • Die Syntaxhervorhebung wird erneut angezeigt und das Popup "SourceKitService Terminated" wird nicht mehr angezeigt
0
Luis Palacios

Gehen Sie in xcode zu Ihrer Menüleiste >> Fenster >> Geräte (Umschalttaste + Befehlstaste + 2). Daraufhin wird ein neues Fenster geöffnet. Fügen Sie unten links einen neuen Simulator hinzu, der speziell auf iOS 8.0 ausgeführt wird, und bearbeiten Sie die vorhandene Liste : Möglicherweise müssen Sie xcode neu starten

refrence: http://www.reddit.com/r/Swift/comments/2bznfo/error_running_playground_unable_to_find_suitable/

0
frank

Xcode 6.1 Beta 3:

Sobald Sie einen nicht privaten Typalias definieren (z. B. typealias Foo = Int) In eine Swift Datei den Buchstaben c eingeben, in eine andere Datei stürzt der SourceKitService ab.

Die Lösung besteht entweder darin, auf die Verwendung von Typ-Aliasen zu verzichten, auf die nächste Betaversion zu warten oder Ihre Typ-Aliasen in Klassendefinitionen zu packen:

public class DummyClass {
    public typealias Foo = String
}

und benutze es so:

var myVar:DummyClass.Foo?
0
Klaas

Berichtet an Apple (# 17266321):

Einzelheiten:

Zusammenfassung: Wenn wir versuchen, ein Wörterbuch mit einem Wert als Array zu drucken, erscheint in einem Popup immer wieder die Meldung "SourceKit beendet. Editor-Funktionalität zeitlich begrenzt". Xcode Friert ein und verliert die Kontexterkennung, wodurch der Text geschwärzt wird.

Schritte zum Reproduzieren: 1. Erstellen Sie ein Array als "var iOSHistoryArray = [" iOS6 "," iOS7 "," iOS8 ",]"

  1. Erstellen Sie ein Wörterbuch als - "var MacOSYosemiteFeatures: Dictionary = [" Device ": iOSHistoryArray]".

  2. Drucken Sie das Wörterbuch als - "println (" Wörterbuch mit Array-Wert:% @\n ", MacOSYosemiteFeatures)" (<< - Culprit - >>

  3. In Schritt 3 wird das Problem kommentiert, wodurch der Xcode wieder funktionsfähig wird.

Erwartete Ergebnisse: Xcode sollte normal funktionieren.

Tatsächliche Ergebnisse: Xcode wird funktionsunfähig, verliert die Kontexterkennung (Alle Schriftarten gehen verloren und der gesamte Text wird schwarz), der gesamte Xcode wird inaktiv.

Version: Version 6.0 (6A215l)

0
aksani56

Ich habe das in den letzten Monaten fast jeden Tag erlebt. Versuchte all das oben und es behebt es nur vorübergehend.

Schließlich habe ich vor zwei Wochen den Speicherort des DerivedData-Speicherorts in einen neuen Speicherort geändert, und ich hatte das Problem kein einziges Mal.

Ich stelle fest, dass der Ordner "Abgeleitete Daten" beim Löschen neu erstellt wird und aus irgendeinem Grund etwa 3 GB umfasst. Beim Erstellen eines neuen Ordners wurden nicht alle Daten neu generiert.

Hoffe das hilft jemandem.

0
bwash70

Passiert immer noch mit xcode 6 Version 6.0 (6A313)

  • Erstellen Sie ein neues Projekt
  • Fügen Sie ein Framework und eine Bibliothek hinzu
  • Wählen Sie das Kakao-Touch-Framework
  • Füge eine Swift Datei hinzu
  • Fügen Sie der Swift Datei eine Klasse hinzu

Stürzt ab

ps: brandneuer mac mini, keine vorherigen xcode-installationen, nichts exotisches. Nur ein Beta-Produkt, nehme ich an.

0
Alex Nolasco

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 dies getan habe, ist das Problem behoben und kommt nicht zurück;)

0
Anton Matosov

Das Ändern des Bereitstellungsziels auf iOS 8.0 hat bei mir funktioniert. Ich weiß, dass jemand sagte, dass das Verschieben auf <= 7.1 funktioniert hat, aber dieses Problem scheint aus mehreren Quellen zu kommen, sodass diese Alternative möglicherweise funktioniert.

0
Maxwell

Swift versucht herauszufinden, welcher Typ alles dynamisch und nicht statisch ist, aber dies kann einen enormen Aufwand bedeuten, wenn es sich um komplexe Typen (wie verkettete Filter, Map, flatMap-Aufrufe) oder große Wörterbücher handelt. Manchmal müssen Sie sie aufteilen, damit der Compiler sie leichter analysieren kann. Ein Cousin dieses Problems ist der Fehler "zu komplex, um rechtzeitig ausgewertet zu werden". Stellen Sie sich einige davon vor, die fast zu komplex waren, um sie in der Zeit zu bewerten: Zusammen werden sie zu einem Ressourcenfresser.

Versuchen Sie, alle Stellen zu finden, an denen Sie dynamische Wörterbücher erstellen oder Ketten untypisierter Anrufe verwenden. Versuchen Sie, genauer zu tippen, insbesondere bei der Deklaration der Variablen.

Einige kurze Beispiele:

Wörterbücher

Schlecht:

let myDict = [ /* bunch of different things */ ]

Besser:

let myDict: [String: AnyObject] = [ /* bunch of different things */ ] 

Beste:

let myDict: [String: SpecificType] = [ /* bunch of similar things */ ]

Zuordnungen

Schlecht:

let filteredUserIds = users.filter({ user in user.enabled })
    .flatMap { user in user.name != nil ? return user.id : return nil }

Besser:

let filteredUserIds: [Int] = users.filter({ user in user.enabled })
    .flatMap { user in user.name != nil ? return user.id : return nil }

Beste:

let enabledUsers: [User] = users.filter { user in user.enabled } 
let filteredUserIds: [Int] = enabledUsers.flatMap { 
    user in user.name != nil ? return user.id : return nil 
}

Die Vorteile sind auch der zusätzlich überprüfte Code, da immer entweder der erwartete Typ oder ein Compilerfehler angezeigt wird. Der Nachteil ist, dass es ein bisschen wie Java aussieht.

Natürlich tritt dieses Problem zuerst auf, während Ihr Projekt wächst. Kleine Swift Projekte sind immer schnell. Es ist also wahrscheinlich eine Menge Arbeit. Die Erfahrung zeigt, welche Ausdrücke kompliziert und zeitintensiv sind. Es wäre großartig, wenn Sie diese Art von Dingen bewerten könnten.

0
Departamento B

Wenn dieser Fehler auftritt, kommentieren Sie einfach den 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)
    }
0
Hong Wei

Bisher waren die 2 häufigsten Ursachen für mich:

  • semikolons am Zeilenende
  • importieren von Frameworks, auf die in der Datei nicht verwiesen wird
0
thisispete

Verschieben Sie die Erweiterung vor die Hauptklasse.

extension SomeType {
// new functionality to add 

}

0
gerachev

Versuch es:

Es gibt einen Fehler im Swift Compiler/Indexer. Einige Zeilen in Ihrem Code verursachen Schwierigkeiten. Sie müssen Ihren Code mit einem anderen Texteditor bearbeiten, um die fehlerhafte Zeile auskommentieren zu können (s) bevor Sie dieses Projekt mit Xcode öffnen können. Wenn Sie keine Ahnung haben, woran es liegt, kommentieren Sie Ihren gesamten Code aus. Sobald Sie das Projekt geöffnet haben, können Sie nach und nach den Code zurückholen, bis er aufsteigt In der CPU-Aktivität erfahren Sie, dass Sie das Problem gefunden haben.

0
user1671097

In meinem Fall hatte ich fehlende Dateien im überbrückten Header importiert. Nachdem ich falsche Importe gelöscht habe ist die Fehlermeldung weg.

0
Shmidt