J'ai un problème avec Xcode où l'erreur "Source Kit Service Terminated" apparaît et toute la coloration syntaxique et l'achèvement du code ont disparu dans Swift. Comment puis-je réparer cela?
Voici un exemple d'image:
J'ai un problème avec Xcode où l'erreur "Source Kit Service Terminated" apparaît et toute la coloration syntaxique et l'achèvement du code ont disparu dans Swift. Comment puis-je réparer cela?
Voici un exemple d'image:
Réponses:
La réponse à la mienne (Xcode6-Beta7) était simplement de supprimer le dossier Derived Data.
Preferences > Locations > Derived Data > click the arrow to open in Finder > trash it.
J'espère que cela aide quelqu'un. Il y a évidemment de nombreuses raisons pour lesquelles ce crash peut se produire.
Je pense que j'ai peut-être trouvé une solution plus générale. Voici les étapes que j'ai utilisées pour encourager Xcode à ne pas produire l' SourceKitService Terminated
erreur.
Error running playground: Failed prepare for communication with playground.
voir cette image sur Twitter .OS X
à iOS
, je recevais une autre erreur (malheureusement, je ne l'ai pas notée).SourceKitService Terminated
problème dans ce fil.IDEPlaygroundDocument: Error encountered running playground
com.apple.CoreSimulator.CoreSimulatorService[3952]: The runtime for the selected device is not installed.
Si vous ne rencontrez un problème que dans le contexte d'un projet Swift, essayez d'abord cela seul. Si cela ne fonctionne pas, essayez toutes les étapes ci-dessous.
Le processus le plus long et le plus complexe. (Les 3 premières étapes ne sont certainement pas utiles, mais je les ai faites, donc enregistrez-les ici)
OS X
à iOS
.Il semble que le problème soit que Xcode6 ne soit pas en mesure de trouver et de se connecter correctement au simulateur. Je n'ai pas pu déterminer pourquoi c'est le cas, mais cela m'a permis de continuer à développer avec Swift. Cela peut être dû au fait que les binaires du simulateur semblent avoir bougé .
Vous avez juste besoin de supprimer le "ModuleCache", c'est une sorte de cache utilisé par Xcode pour l'autocomplétion.
Copiez et collez la ligne suivante dans le terminal:
rm -rf ~ / Library / Developer / Xcode / DerivedData / ModuleCache
SourceKitService se bloque sur mon système dès que je tape
extension foo {
J'utilise Xcode 6 beta 6 et ce n'est pas grave si je le tape dans un fichier vide ou l'ajoute à un fichier existant. Dès que la source contient un extension
bloc, il se bloque. Cela se produit même sur les projets nouvellement créés.
Ma "solution" est d'éviter l'extension dans les sources sur lesquelles je travaille actuellement. Je commente la fin d'un bloc de classe et le début du bloc d'extension. Dès que j'ai fini mon travail sur la classe, je les commente à nouveau:
class MyClass {
[... my stuff ...]
//}
//
//extension MyClass {
}
Cela a commencé à se produire sur mon projet spritekit après avoir inséré la fonction touchesMoved. Cette fonction utilise le déballage forcé, ce qui semble causer le problème:
override func touchesMoved(touches: NSSet!, withEvent event: UIEvent!)
Après avoir supprimé les points d'exclamation et ainsi arrêté le déballage forcé, le SourceKitService a cessé de planter.
J'espère que cela t'aides!
J'ai trouvé une solution sur les forums des développeurs d'Apple (qui nécessite une connexion, je vais donc l'expliquer ici aussi).
TLDR : n'importez pas un @protocol
dans votre en-tête de pontage Objective-C vers Swift qui porte le même nom qu'un @interface
. Par exemple, le SDK Facebook a à la fois un protocole et une interface nommée "FBGraphObject".
Voici le message du forum:
L'ajout du SDK Facebook provoque le blocage de SourceKitService. Si vous souhaitez utiliser la version bêta 3 et que vous avez besoin du SDK Facebook, une solution que j'ai trouvée et qui fonctionne pour moi est de refactoriser le @protocol FBGraphObject du SDK Facebook et de le renommer en quelque chose comme @protocol FBGraphObjectProtocol en tant qu'interface FBGraphObject @interface existe également et apparemment SourceKit n'aime pas ça.
C'est certainement une solution temporaire juste pour vous garder fonctionnel et vous devrez utiliser Cocoapods ou autrement créer le SDK Facebook vous-même plutôt que d'utiliser la bibliothèque de framework.
Pour le moment, vous devrez vous assurer que vous n'avez pas de déclarations @protocol et @interface en conflit et que cela inclut les bibliothèques tierces que vous utilisez.
Cela m'a coûté aujourd'hui, j'espère que ça aide!
Publié par e.parto le 10 juillet 2014
3.17.1
Utilisez un autre nom que Swift pour le projet. "Swift" est réservé.
UIView
.
Afin de résoudre ce problème, vous pouvez avoir un problème étrange avec votre code Swift. Par exemple, avoir plusieurs définitions d'IBOutlets parce que vous étiez en train de copier et coller. il s'agit généralement d'une erreur de syntaxe qui ne peut pas être gérée.
Quittez Xcode s'il est ouvert. Puis à partir de Terminal run:
defaults delete com.apple.dt.Xcode
Cela restaurera Xcode aux paramètres par défaut. Ouvrez Xcode et tout devrait fonctionner à nouveau.
Pour moi (xcode 6.1), la raison était que j'avais oublié d'adopter ma sous-classe au protocole.
Par exemple, c'est faux:
protocol SomeProtocol { ... }
class A :NSObject, SomeProtocol {
...
}
class B : A {
...
}
et c'est ok:
protocol SomeProtocol { ... }
class A : NSObject, SomeProtocol {
...
}
class B : A, SomeProtocol {
...
}
Un programme composé uniquement de ces deux lignes (éventuellement erroné en termes de syntaxe Swift) suffit ici à provoquer l'erreur "SourceKitService Terminated":
var x = 42
println("Hello", x)
Utiliser let
au lieu de var
fait que l'éditeur se comporte normalement à nouveau. Xcode version 6.0 (6A215l)
J'ai le même problème aujourd'hui, la chose était avec println
, je viens d'essayer l'ancien style NSLog pour imprimer une valeur:
// something like this
println("value = %@", valueObj)
La façon dont nous devons composer les chaînes en swift a évolué du style printf au style inline, alors maintenant vous intégrez vos valeurs directement dans la chaîne de format comme ceci:
"Here goes \(YOUR_VARIABLE)"
Ainsi, pour l'exemple ci-dessus, la solution est:
println("value =\(valueObj)")
J'ai eu le même problème avec Xcode6 beta 3 pour un projet créé en beta 2.
C'était à cause de nouveaux changements de rupture dans le langage rapide, c'est-à-dire la syntaxe de déclaration de tableau.
Vérifiez le code effectué en raison des changements de rupture dans la bêta 3.
L'un des exemples dans mon cas était:
J'ai dû changer:
var tabBarController : UITabBarController = self.window?.rootViewController as UITabBarController;
à
var tabBarController : UITabBarController = self.window!.rootViewController as UITabBarController
Conclusion: il semble qu'il y ait une erreur dans le code source, dans certaines conditions, cette erreur est produite par Xcode.
Solution jusqu'à ce que le bug soit corrigé: Vérifiez l'erreur manuellement :)
Bonne chance!
La solution pour moi était de changer le simulateur. J'utilisais l'iPhone 5S pour mon simulateur et quand je l'ai changé pour l'iPhone 5, tout fonctionnait parfaitement. Espérons qu'une future version le corrigera complètement.
Je pense que j'ai compris une (car il y en a probablement beaucoup) des raisons pour lesquelles cela se produit.
Dans mon cas, j'importais des fichiers Objective-C via l'en-tête de pontage qui présentait l'une des conditions suivantes:
La correction des cibles d'application sur les fichiers Objective-C OU la suppression de l'importation de ces fichiers dans l'en-tête de pontage semble résoudre le problème.
Pour info - Si vous devez définir la cible des fichiers d'en-tête (.h) qui n'ont pas de fichier d'implémentation (.m), vous pouvez suivre ces étapes simples: Impossible de modifier la visibilité de l'appartenance à la cible dans Xcode 4.5
Juste pour ajouter une autre solution potentielle ici, j'avais accidentellement nommé une classe var du même nom que son type:
class var Settings:Settings {
get { return classVarWorkAround.settings }
}
Cela plantera SourceKit FOR SURE. Erreur de syntaxe stupide, mais au cas où quelqu'un d'autre ferait la même erreur.
Edit: également selon @Portland Runner:
De même, si vous définissez le type de retour sur le nom func, vous obtiendrez l'erreur.
func foo() ->foo{}
func foo() ->foo{}
(n'hésitez pas à l'ajouter à votre réponse)
Lorsque cette erreur commence à apparaître, commentez simplement le dernier / récent morceau de code que vous avez écrit et attendez un moment. La coloration syntaxique devrait réapparaître. C'est ainsi que je contourne le problème.
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)
}
Signalé à Apple (# 17266321):
Détails:
Résumé: Si nous essayons d'imprimer un dictionnaire avec une valeur sous forme de tableau, un pop-up continue à apparaître en disant - "SourceKit terminé. Fonctionnalité de l'éditeur limitée temporairement". Xcode Gèle et perd la reconnaissance de contexte provoquant le noircissement du texte.
Étapes pour reproduire: 1. Créez un tableau comme - "var iOSHistoryArray = [" iOS6 "," iOS7 "," iOS8 ",]"
Créez un dictionnaire sous la forme - "var MacOSYosemiteFeatures: Dictionary = [" Device ": iOSHistoryArray]".
Imprimez le dictionnaire en tant que - "println (" Dictionnaire contenant la valeur du tableau:% @ \ n ", MacOSYosemiteFeatures)" (<< - Coupable - >>)
L'étape 3 provoque le commentaire du problème qui rend le Xcode fonctionnel à nouveau.
Résultats attendus: Xcode devrait fonctionner normalement.
Résultats réels: Xcode devient non fonctionnel, perd la reconnaissance du contexte (toutes les polices sont perdues et tout le texte devient noir), l'ensemble Xcode devient inactif.
Version: Version 6.0 (6A215l)
Essayez-le:
Il y a un bogue dans le compilateur / indexeur Swift. Une ou plusieurs lignes de votre code lui posent des problèmes. Vous devrez modifier votre code avec un autre éditeur de texte pour commenter la ou les lignes incriminées avant de pouvoir ouvrir ce projet avec Xcode. Si vous n'avez aucune idée du problème, commentez tout votre code. Une fois le projet ouvert, vous pouvez commencer à ramener le code petit à petit jusqu'à ce que l'augmentation de l'activité du processeur vous indique que vous avez trouvé le problème.
Problème:
Mon cas: Bêta 3 installée, projet OSX uniquement, un fichier a détecté l'erreur "l'opérateur de plage semi-fermée est passé de .. à .. <". La fenêtre contextuelle commence à apparaître et la mise en surbrillance du code commence à échouer.
Solution:
Dans xcode, allez dans votre barre de menu >> fenêtre >> appareils (shift + cmd + 2) une nouvelle fenêtre apparaîtra et en bas à gauche, ajoutez un nouveau simulateur, en particulier un fonctionnant sur iOS 8.0 à la liste existante : vous devrez peut-être redémarrer xcode
réfrence: http://www.reddit.com/r/swift/comments/2bznfo/error_running_playground_unable_to_find_suitable/
J'ai eu la même erreur avec le projet Objective-C ++ imbriqué qui inclut maintenant Framework avec du code Swift. Afin de résoudre ce problème, j'ai dû créer explicitement le cadre. Une fois que j'ai fait, ce problème a disparu et ne revient pas;)
Toujours avec xcode 6 version 6.0 (6A313)
Crashes
ps: tout nouveau mac mini, aucune installation précédente de xcode, rien d'exotique. Juste un produit bêta, je suppose.
Xcode 6.1 Beta 3:
Dès que vous définissez un alias de type non privé (par exemple typealias Foo = Int
) dans un fichier Swift et tapez la lettrec
dans un autre fichier, SourceKitService se bloque.
La solution consiste soit à ne plus utiliser d'alias de type, à attendre la prochaine version bêta ou à encapsuler vos alias de type dans les définitions de classe:
public class DummyClass {
public typealias Foo = String
}
et utilisez-le comme ceci:
var myVar:DummyClass.Foo?