SourceKitService terminado

242

Tengo un problema con Xcode en el que aparece el error "Servicio de kit de origen terminado" y todo el resaltado de sintaxis y la finalización del código desaparecen en Swift. ¿Cómo puedo arreglar esto?

Aquí hay una imagen de ejemplo:

ingrese la descripción de la imagen aquí

Tony
fuente
1
Esto parece ser un problema con Xcode beta. Reiniciar Xcode solucionó el problema para mí, aunque al volver a abrir el proyecto se produjo el error y luego se detuvo.
ThomasW
44
Acabo de comenzar a tener este problema ... luego vi un error de sintaxis en mi archivo swift. Una vez que solucioné esto, el editor comenzó a trabajar nuevamente.
brindy
80
Me gustaría matar para que esto se arregle ahora mismo ...
Santa Claus
2
De hecho, el error es causado por un error de sintaxis dentro de Swift. Si elimina el error de sintaxis, el error desaparecerá :)
Steffen Brem
2
No solo no se resuelve en 6.1, sucede incluso con los "errores" más leves, que ni siquiera son errores. A menudo puede activarlo mientras sigue escribiendo . Obtuve que sucedió cuando llegué hasta el "stru" en "struct". ¡Supongo que realmente quería decirme algo antes de obtener el "ct"!
Maury Markowitz

Respuestas:

114

La respuesta a la mía (Xcode6-Beta7) fue simplemente eliminar la carpeta de datos derivados.

Preferences > Locations > Derived Data > click the arrow to open in Finder > trash it.

Espero que esto ayude a alguien. Obviamente, hay muchas razones por las que puede ocurrir este bloqueo.

tobygriffin
fuente
Gracias, esto lo solucionó.
Noura
44
Parece que esto solucionó el problema, pero también usando Xcode 6.1 GM.
Flovdis
77
esto lo solucionó durante unos 10 minutos, luego cambié el nombre de una variable y ¡está de vuelta!
hariseldon78
1
No es una solución permanente, sino una mejora de la respuesta ... cree un script de shell y ejecútelo siempre que ocurra rm -frd ~ / Library / Developer / Xcode / DerivedData / * rm -frd ~ / Library / Caches / com.apple.dt. Xcode / *
Raj
2
No solucionó mi problema
Shirish Kumar
35

Creo que pude haber encontrado una solución más general. A continuación se detallan los pasos que utilicé para alentar a Xcode a no producir el SourceKitService Terminatederror.


Los síntomas que tenía:

  • Cuando iniciaba un nuevo patio de recreo, recibía un error acerca de no poder comunicarme con el patio de recreo ( Error running playground: Failed prepare for communication with playground.vea esta imagen en twitter .
  • Cuando cambiaba el patio de recreo OS Xa iOS, recibía otro error (desafortunadamente no lo escribí).
  • Cuando comenzara a escribir un proyecto Swift basado en iOS, intentando usar el código completo / intellisense en cualquier clase específica de UIKit, recibiría el SourceKitService Terminatedproblema en este hilo.

Proceso de depuración

  • Comencé buscando en Google SourceKitService, esto se hizo muy poco.
  • Luego comencé a monitorear Console.app mientras usaba Xcode. Esto mostró un par de errores:
    • IDEPlaygroundDocument: Error encountered running playground
    • com.apple.CoreSimulator.CoreSimulatorService[3952]: The runtime for the selected device is not installed.

Lo que hice para corregir este problema.

Si solo tiene un problema dentro del contexto de un proyecto Swift, intente esto solo primero. Si eso no funciona, intente todos los pasos más abajo.

  1. Abra su proyecto y cambie el objetivo de implementación del objetivo a algo <= 7.1.

El proceso más largo e involucrado. (Los primeros 3 pasos no son de ninguna ayuda, pero los hice, y entonces grábelos aquí)

  1. Elimine completamente todas las copias de Xcode en su sistema.
  2. Reinicia tu computadora.
  3. Vuelva a instalar Xcode6-beta solamente.
  4. Verifique que todavía tenga el problema en el área de juegos y / o proyectos.
  5. Abra el simulador de iOS.
  6. Hardware -> Dispositivo -> Administrar dispositivos
  7. Eliminar todos los dispositivos.
  8. Recrea todos los dispositivos que quieras. Agregué la versión de iOS al final del nombre, solo porque sí.
  9. Reinicie Xcode y el simulador.
  10. Verifique que al menos los parques infantiles ya no arrojen problemas cuando se cambia de OS Xa iOS.
  11. Abra su proyecto y cambie el objetivo de implementación del objetivo a algo <= 7.1.

Análisis

Parece que el problema es que Xcode6 no puede encontrar y conectarse correctamente al simulador. No he podido determinar por qué este es el caso, pero esto me ha permitido seguir desarrollando con Swift. Esto puede tener que ver con el hecho de que los binarios del simulador parecen haberse movido .

Andrew Monshizadeh
fuente
2
Tuve un problema similar: "El tiempo de ejecución del dispositivo seleccionado no está instalado". error al ejecutar el área de juegos para iPhonesimulator. Paso 5. ~ 9. solucionó el problema.
cebada
Como nota, Xcode 6 Beta 3 ha resuelto completamente el problema para mí. No estoy seguro de cómo o por qué. Esperemos que lo mismo sea cierto para los demás.
Andrew Monshizadeh
2
Gracias por estos pasos. Ajusté mi objetivo de implementación de 7.0 a 7.1 y eso parece haber resuelto el problema por ahora.
Nick
Establecer el objetivo de implementación en 7.1 funcionó para mí, pero estoy usando el objetivo de marco junto con el objetivo de la aplicación, por lo que esta compilación falló, lo que es realmente malo. ¡Pero ya no tengo ninguna sugerencia de código, incluso el color está de vuelta!
Solomon
1
Seguí todos estos pasos pero no funcionó para mí. : - /
Rohit Goyal
32

Solo necesita eliminar el "ModuleCache", este es un tipo de caché utilizado por Xcode para Autocompletar.

Copie y pegue la siguiente línea en la Terminal:

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

David Attias
fuente
1
Esto lo hizo por mí. Por un tiempo, solo pude resaltar y autocompletar cuando tuve el dispositivo IOS seleccionado en el esquema activo.
Wez
1
Esto funcionó para mí también. De acuerdo con las notas de la versión aquí, parte de esto se corrige en Xcode 6.1.1 semilla GM
Jacob Harding
Por desgracia, años después, y Xcode definitivamente no está arreglado. Usar Xcode 8.1 (8B62) y aún obtener SourceKitServer se bloquea cada vez que hago clic en un símbolo. Han borrado los datos derivados, han eliminado el ModuleCache. Reinició Xcode. Reinstalado Xcode. Xcode instalado en una nueva máquina. Lo mismo pasa. Xcode es un desastre lamentable.
Womble
27

SourceKitService se bloquea en mi sistema tan pronto como escribo

extension foo {

Estoy usando Xcode 6 beta 6 y no importa si lo escribo en un archivo vacío o lo agrego a uno existente. Tan pronto como la fuente contenga un extensionbloque, se bloqueará. Esto sucede incluso en proyectos recién creados.

Mi "solución" es evitar la extensión en las fuentes en las que estoy trabajando actualmente. Comento el final de un bloque de clase y el comienzo del bloque de extensión. Tan pronto como termine mi trabajo en la clase, los comento nuevamente:

class MyClass {

    [... my stuff ...]

//}
//
//extension MyClass {

}
Klaas
fuente
Solo una nota: las extensiones no hicieron esto en la versión beta 5. Es una nueva "característica" beta6.
Gene De Lisa
Cualquier otra solución porque hay toneladas de extensiones en mi proyecto. No se puede trabajar con este Xcode ahora.
Bagusflyer
Esto esta esto tanto esto Descubrí que eso es lo que me muerde en mis proyectos más recientes. Archivando un informe de error ahora.
Ben Kreeger
2
También es un gran problema para mí. Me limité a mover las extensiones a su propio archivo, escribir el código en la clase, copiarlas y pegarlas en la extensión. Cómo se coló esto es un poco desconcertante.
Andrew Monshizadeh
9

Comenzó a suceder en mi proyecto spritekit después de insertar la función touchesMoved. Esta función utiliza el desenvolvimiento forzado, que parece causar el problema:

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

Después de eliminar los signos de exclamación y detener así el desenvolvimiento forzado, SourceKitService dejó de fallar.

¡Espero que esto ayude!

Markus Buhl
fuente
¡Trabajó para mi! Muchas gracias (¡espero que lo arreglen!)
napolux 05 de
9

Encontré una solución en los foros de desarrolladores de Apple (que requiere inicio de sesión, así que lo explicaré aquí también).

TLDR : no importe un @protocolencabezado de puente de Objective-C a Swift que tenga el mismo nombre que un @interface. Por ejemplo, el SDK de Facebook tiene un protocolo y una interfaz llamada "FBGraphObject".

Aquí está la publicación del foro:

Agregar Facebook SDK hace que SourceKitService se bloquee. Si desea usar beta 3 y necesita Facebook SDK, una solución que encontré y que funciona para mí es refactorizar @protocol FBGraphObject de Facebook SDK y renombrarlo a algo como @protocol FBGraphObjectProtocol como @interface FBGraphObject también existe y aparentemente SourceKit no le gusta

Seguro que es una solución temporal solo para mantenerte funcional y tendrás que usar Cocoapods o construir el SDK de Facebook tú mismo en lugar de usar la biblioteca de framework.

Por el momento, deberá asegurarse de no tener declaraciones conflictivas de @protocol y @interface, y eso incluye bibliotecas de terceros que pueda estar utilizando.

Esto me costó hoy, ¡espero que ayude!


Publicado por e.parto el 10 de julio de 2014

aleclarson
fuente
Muchas gracias. Se resolvió mi problema.
Viktor Radchenko
Este error puede aparecer si está utilizando el Patrón de Jon Sterling para la Inmutabilidad Ligera ( jonmsterling.com/posts/… ), ya que recomienda protocolos que comparten un nombre con su implementación. Cambiar el nombre de los protocolos me resolvió el problema sin efectos negativos.
erikprice
Esto se resolvió para mí con Facebook SDK3.17.1
KVISH
¡Esto me lo arregló! Gracias Roman
Roman
8

Use otro nombre que no sea Swift para el proyecto. "Swift" está reservado.

Marius Fanu
fuente
10
También recibo esta advertencia, pero el nombre de mi proyecto no incluye la palabra Swift en absoluto, por lo que esta no es "la" solución, solo tal vez "una" solución. Y no, no he descubierto cuál es el problema con el mío.
Andrew Monshizadeh
1
@AndrewMonshizadeh Mismo problema, no hay referencias a Swift, pero apenas puedo escribir uno o dos caracteres antes de recibir este error.
BytesGuy
1
Investigaciones posteriores me han llevado a determinar que recibo el error Terminado de SourceKitService cuando intento usar la finalización de código en una subclase de UIView.
Andrew Monshizadeh
44
Esta no es la causa del problema. No tengo idea de por qué se vota esto.
Santa Claus
1
NRitH, tuve este problema al usar Xcode 6 beta 1 y cambiar el proyecto fue una solución que me funcionó. Probablemente hay numerosos errores que desencadenan este error. Probablemente esté utilizando una versión más nueva de Xcode y probablemente hayan corregido ese error.
Marius Fanu
8

Tuve este problema cada pocos segundos en Xcode 6 Beta 3, y continuó incluso en proyectos completamente nuevos. Cambié el Objetivo de implementación de 8.0 a 7.1 y se detuvo.

carolino
fuente
5

¿Se llama su proyecto Swift? Al ver ese mensaje, la construcción también fallaría ( <unknown>:0: error: module name "Swift" is reserved for the standard library). Intente usar otro nombre de proyecto como SwiftTest. Funcionaría

devxoul
fuente
3

Para solucionar esto, puede tener algún problema extraño con su código Swift. Por ejemplo, tener múltiples definiciones de IBOutlets porque estaba en medio de copiar y pegar. generalmente es solo un error de sintaxis que no se pudo manejar.

Tony
fuente
2
Estoy viendo este problema con el código no modificado de una plantilla de proyecto Xcode, así que no creo que sea un problema con el código Swift.
ThomasW
Puede ser causado por múltiples IBOutlets con el mismo nombre.
Tony
3

Descubrí que al escribir explícitamente (estáticamente) los tipos de variables, en lugar de inferirlos, resolvió el problema por mí.

Olshansk
fuente
3

Salga de Xcode si está abierto. Luego, desde la Terminal ejecutar:

defaults delete com.apple.dt.Xcode

Esto restaurará Xcode a la configuración predeterminada. Abra Xcode y todo debería funcionar nuevamente.

Ross Gibson
fuente
2

Para mí (xcode 6.1) la razón fue que olvidé adoptar mi subclase al protocolo.

Por ejemplo, esto está mal:

protocol SomeProtocol { ... }
class A :NSObject, SomeProtocol {
...
}
class B : A {
...
}

y esto esta bien:

protocol SomeProtocol { ... }
class A : NSObject, SomeProtocol {
...
}
class B : A, SomeProtocol {
...
}
Ivo Leko
fuente
Tuve el mismo problema con el protocolo olvidado. Gracias por tu consejo. Parece que la versión de lanzamiento de xcode todavía funciona como beta =)
John Kakon
¡Gracias! Me he vuelto loco por esto. Su solución solucionó mi problema. Espero que esto se solucione, parece extraño tener que agregar protocolos en cada subclase ..
Alvin
1

Un programa que consta solo de estas dos líneas (posiblemente incorrecto en términos de sintaxis Swift) es suficiente para causar el error "SourceKitService Terminated" aquí:

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

Usar en letlugar de varhace que el editor se comporte normalmente de nuevo. Xcode versión 6.0 (6A215l)

Alejandro
fuente
En general, sospecho que este error aparece cuando Xcode no puede manejar un cierto error de sintaxis, en el código real o al hacer la compilación (en el ejemplo de tener un nombre rápido del proyecto)
Lyndsey Scott
Estoy diciendo que el error probablemente sea causado por un error de sintaxis y dado que su código tiene un error de sintaxis claro, está en línea con mi teoría.
Lyndsey Scott
"SourceKitService Terminated" como respuesta a un error de sintaxis no tiene sentido. Este es el error que estaba señalando. Este es el error en cuestión.
Alexander
Si. Ese es el significado de la palabra "error". Este error parece ser provocado por errores de sintaxis. Esperemos que Apple lo arregle pronto.
Lyndsey Scott
1

Tuve el mismo problema hoy, el problema fue printlnque acabo de probar el viejo estilo NSLog para imprimir un valor:

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

La forma en que debemos componer cadenas en Swift ha evolucionado del estilo printf al estilo en línea, por lo que ahora inserta sus valores directamente en la cadena de formato de esta manera:

"Here goes \(YOUR_VARIABLE)"

Entonces, para el ejemplo anterior, la solución es:

println("value =\(valueObj)")
MANIAK_dobrii
fuente
Hola, @downwoter, ¿qué tiene de malo esta respuesta? Me parece bien Sé que todavía podríamos usar NSLog con Swift, pero println es la forma de hacerlo desde Swift. Y esta respuesta se relaciona directamente con el problema, la línea descrita bloquea el servicio de SourceKit.
MANIAK_dobrii
Tuve un problema similar con un println () estaba tratando de imprimir una tupla sin nombre
thisispete
1

Tuve el mismo problema con Xcode6 beta 3 para un proyecto creado en beta 2.

Fue debido a nuevos cambios importantes en el lenguaje rápido, es decir, la sintaxis de declaración de matriz.

Verifique el código afectado debido a cambios de última hora en beta 3.

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

Uno de los ejemplos en mi caso fue:

Tuve que cambiar:

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

a

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

Conclusión: Parece que si hay un error en el código fuente, en algunas condiciones este error es producido por Xcode.

Solución hasta que se solucione el error: compruebe el error manualmente :)

¡Buena suerte!

Tejasvi Hegde
fuente
1

La solución para mí fue cambiar el simulador. Estaba usando el iPhone 5S para mi simulador y cuando lo cambié al iPhone 5, todo funcionó a la perfección. Esperemos que una versión futura lo arregle por completo.

Fomentia
fuente
He descubierto que el simulador de iPhone 5 es siempre la mejor opción, todos los demás
fallan
@DanielGalasko Interesante. Usualmente uso el iPhone 5S, es muy estable para mí.
Fomentia
si está utilizando Xcode 6.1, esto se ha dirigido a mi entendimiento :)
Daniel Galasko
Retracto mi declaración aún está rota y el 5 es definitivamente el único simulador que funciona
Daniel Galasko
1

Descubrí que eliminar los datos derivados del terminal resuelve el problema hasta el próximo bloqueo. : S

Se encuentra en: / Usuarios / {Nombre de usuario} / Biblioteca / Desarrollador / Xcode / DerivedData / {Nombre del proyecto} - {Secuencia de caracteres aleatorios}

Espero que esto ayude.

cantó
fuente
1

Creo que descubrí una (ya que probablemente hay muchas) de las razones por las que esto ocurre.

En mi caso, estaba importando archivos Objective-C a través del Encabezado de puente que tenía uno de los siguientes:

  1. El archivo de implementación (.m) para la importación de Objective-C no tenía el objetivo de la aplicación configurado correctamente.
  2. El archivo Objective-C solo tenía un archivo de encabezado (.h) y NO un archivo de implementación (.m). (Nuevamente, creo que esto es parte del conjunto "sin objetivo de aplicación adecuada", ya que solo puede establecer objetivos en los archivos .m y no en los archivos .h)

Arreglar los objetivos de la aplicación en los archivos Objective-C O eliminar la importación de esos archivos en el Encabezado de puente todos juntos parece solucionar el problema.

Para su información: si necesita establecer el objetivo de los archivos de encabezado (.h) que no tienen un archivo de implementación (.m), puede seguir estos simples pasos: No puede cambiar la visibilidad de la membresía de destino en Xcode 4.5

JimmyJammed
fuente
1

Solo para agregar una solución potencial más aquí, accidentalmente llamé a una clase var con el mismo nombre que su tipo:

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

Esto bloqueará SourceKit POR SEGURO. Estúpido error de sintaxis, pero en caso de que alguien más cometa el mismo error.

Editar: también según @Portland Runner:

Del mismo modo, si establece el tipo de retorno al nombre de la función, obtendrá el error.

func foo() ->foo{}
ohhh
fuente
1
Del mismo modo, si establece el tipo de retorno al nombre de la función, obtendrá el error. func foo() ->foo{} (siéntase libre de agregarlo a su respuesta)
Portland Runner
0

Cuando este error comience a aparecer, solo comente el último / reciente fragmento de código que escribió y espere un momento. El resaltado de sintaxis debería reaparecer. Así es como trabajo el problema.

    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)
    }
Hong Wei
fuente
El sistema se reinicia independientemente de cualquier cosa que haga. No tiene que comentar la línea, todavía comenzará a ejecutarse nuevamente en breve. Y estrellarse también, por supuesto.
Maury Markowitz
0

Reportado a Apple (# 17266321):

Detalles:

Resumen: si intentamos imprimir un diccionario con valor como una matriz, aparece una ventana emergente que dice: "SourceKit finalizó. La funcionalidad del editor está temporalmente limitada". Xcode Congela y pierde el reconocimiento de contexto haciendo que el texto se ennegrezca.

Pasos para reproducir: 1. Cree una matriz como - "var iOSHistoryArray = [" iOS6 "," iOS7 "," iOS8 ",]"

  1. Cree un diccionario como - "var MacOSYosemiteFeatures: Dictionary = [" Device ": iOSHistoryArray]".

  2. Imprima el diccionario como - "println (" Diccionario que contiene el valor de matriz:% @ \ n ", MacOSYosemiteFeatures)" (<< - Culpable - >>)

  3. El paso 3 provoca el problema al comentar, lo que hace que el Xcode vuelva a funcionar.

Resultados esperados: Xcode debería funcionar normalmente.

Resultados reales: Xcode deja de funcionar, pierde el reconocimiento de contexto (toda la fuente se pierde y todo el texto se vuelve negro), todo Xcode queda inactivo.

Versión: Versión 6.0 (6A215l)

aksani56
fuente
0

Intentalo:

Hay un error en el compilador / indexador Swift. Algunas líneas o líneas en su código le están dando dificultades. Tendrá que editar su código con algún otro editor de texto para comentar las líneas ofensivas antes de poder abrir ese proyecto con Xcode. Si no tiene idea de cuál es el problema, comente todo su código. Una vez que tenga el proyecto abierto, puede comenzar a recuperar el código poco a poco hasta que el aumento de la actividad de la CPU le indique que ha encontrado el problema.


fuente
@Pang si las respuestas son válidas correctamente y la misma a continuación, las preguntas son probablemente duplica por lo que debe votar o bandera para cerrarlas - En este caso, este es definitivamente el de mantener abierta
mmmmmm
0

Problema:

  • Si hay un error en el código fuente, puede aparecer la ventana emergente "SourceKitService Terminated" y el resaltado del código deja de funcionar. Puede suceder o no, cuando ocurre bajo múltiples condiciones diferentes.

Mi caso: instalado beta 3, solo proyecto OSX, un archivo detectó que el "operador de rango medio cerrado ha cambiado de ... a ... <" error. La ventana emergente comienza a aparecer y el resaltado de código comienza a fallar.

Solución:

  • Se corrigió el error detectado por Xcode
  • Cambie a un .swift diferente en Navigator, vuelva al original
  • Reaparece el resaltado de sintaxis y desaparece la ventana emergente "SourceKitService Terminated"
Luis Palacios
fuente
0

En mi caso, había importado archivos faltantes en el encabezado en puente. Después de eliminar las importaciones incorrectas, la notificación de error desapareció.

Shmidt
fuente
0

Tuve el mismo error con el proyecto Objective-C ++ anidado que ahora incluye Framework con código Swift. Para solucionar este problema, tuve que construir explícitamente el marco. Una vez que lo hice, ese problema desapareció y no regresó;)

Anton Matosov
fuente
0

Sigue sucediendo con xcode 6 versión 6.0 (6A313)

  • Crea un nuevo proyecto
  • Agregar un marco y biblioteca
  • Seleccione marco táctil de cacao
  • Agregar un archivo Swift
  • Agregar una clase al archivo swift

Choques

ps: nuevo mac mini, sin instalaciones previas de xcode, nada exótico. Solo un producto beta, supongo.

Alex Nolasco
fuente
0

Xcode 6.1 Beta 3:

Tan pronto como defina un alias de tipo no privado (p typealias Foo = Int. Ej. ) En un archivo Swift, escriba la letra cen otro archivo que se bloquea SourceKitService.

La solución es renunciar al uso de alias de tipo, esperar la próxima versión beta o ajustar sus alias de tipo en las definiciones de clase:

public class DummyClass {
    public typealias Foo = String
}

y úsalo así:

var myVar:DummyClass.Foo?
Klaas
fuente
0

Cambiar el objetivo de implementación a iOS 8.0 funcionó para mí. Sé que alguien dijo que moverlo a <= 7.1 funcionó, pero este problema parece provenir de múltiples fuentes, por lo que esta alternativa puede funcionar.

Maxwell
fuente