tutorial for espaƱol developer apple ios xcode swift

ios - for - xcode reference



SourceKitService Terminado (30)

¿Su proyecto se llama Swift ? Al ver ese mensaje, la compilació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.

Estoy teniendo un problema con Xcode donde aparece el error "Source Service Service Terminated" y todo el resaltado de sintaxis y la finalización del código desaparecieron en Swift. ¿Cómo puedo arreglar esto?

Aquí hay una imagen de ejemplo:


Cambiar el destino de la 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.


Comenzó a suceder en mi proyecto de 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, por lo tanto, detener el desenvolvimiento forzado, SourceKitService dejó de fallar.

¡Espero que esto ayude!


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 Enlace que tenía uno de los siguientes valores verdaderos:

  1. El archivo de implementación (.m) para la importación de Objective-C, no tenía el destino 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). (Una vez más, creo que esto es parte del conjunto de "objetivo de aplicación no adecuado", ya que solo se pueden establecer objetivos en los archivos .m y no en los archivos .h)

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

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


Creo que puedo haber encontrado una solución de propósito más general. A continuación, se encuentran los pasos que utilicé para SourceKitService Terminated a Xcode que no produzca el error de SourceKitService Terminated .

Los síntomas que estaba teniendo:

  • Cuando iniciaba un nuevo patio de recreo, recibía un error por 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 campo de juego de OS X a iOS , recibía otro error (desafortunadamente no escribí eso).
  • Cuando comenzaría a escribir en un proyecto Swift basado en iOS, intentando usar la terminación de código / intellisense en cualquier clase específica de UIKit, recibiría el problema de SourceKitService Terminated en este hilo.

Proceso de depuración:

  • Comencé buscando en google para SourceKitService, esto tiene muy poco.
  • Entonces comencé a monitorear Console.app mientras utilizaba 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 a continuación.

  1. Abra su proyecto y cambie el destino de despliegue del objetivo a algo <= 7.1.

El proceso más largo e involucrado. (Los primeros 3 pasos no son muy útiles, pero los hice, así que regístrelos aquí)

  1. Borre completamente todas las copias de Xcode en su sistema.
  2. Reinicia tu computadora.
  3. Reinstalar Xcode6-beta solamente.
  4. Verifique que todavía tenga el problema en el área de juegos y / o proyectos.
  5. Abre el simulador de iOS.
  6. Hardware -> Dispositivo -> Administrar dispositivos
  7. Eliminar todos los dispositivos.
  8. Recrear todos los dispositivos que quieras. Agregué la versión de iOS al final del nombre, solo porque.
  9. Reinicia Xcode y el simulador.
  10. Verifique que al menos los parques infantiles ya no presenten problemas cuando se cambie de OS X a iOS .
  11. Abra su proyecto y cambie el destino de despliegue 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 continuar desarrollando con Swift. Esto puede tener que ver con el hecho de que los binarios del simulador parecen haberse movido .


Cuando este error comience a aparecer, simplemente comente el último / último fragmento de código que escribió y espere un momento. El resaltado de sintaxis debería reaparecer. Así es como soluciono 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) }


En mi caso había importado archivos perdidos en el encabezado de puente. Después de que borre las importaciones incorrectas, la notificación de error se fue



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

TLDR : no importe un @protocol en su Objective-C al encabezado de puente de Swift que tiene el mismo nombre que una @interface . Por ejemplo, el SDK de Facebook tiene un protocolo y una interfaz llamada "FBGraphObject".

Aquí está la publicación del foro:

Al agregar el SDK de Facebook, SourceKitService se bloquea. Si quieres usar el beta 3 y necesitas el SDK de Facebook, encontré una solución alternativa que está trabajando para mí: está refactorizando @protocol FBGraphObject del SDK de Facebook y cambiando el nombre a algo como @protocol FBGraphObject. no le gusta

Seguro que es una solución temporal solo para mantenerte funcional y tendrás que usar Cocoapods o, de lo contrario, crear el SDK de Facebook por ti mismo en lugar de usar la biblioteca del marco.

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

Esto me costó hoy, espero que ayude!

Publicado por e.parto el 10 de julio de 2014


Encontré que al tipear explícitamente (estáticamente) los tipos de variables, en lugar de inferirlos, resolví el problema por mí.


Encontré que eliminar datos derivados de la terminal resuelve el problema hasta la próxima caída. : S

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

Espero que esto ayude.


Hoy println mismo problema, la cosa fue con println , acabo de probar el antiguo estilo NSLog para imprimir un valor:

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

La forma en que debemos componer las cadenas en swift ha evolucionado desde el estilo printf al estilo en línea, por lo que ahora incrusta sus valores directamente en la cadena de formato como esta:

"Here goes /(YOUR_VARIABLE)"

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

println("value =/(valueObj)")


Intentalo:

Hay un error en el compilador / indexador Swift. Algunas líneas en tu código le están dando dificultad. 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 en la actividad de la CPU le indique que ha encontrado el problema.


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 este accidente puede ocurrir.


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


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

Por ejemplo, esto es incorrecto:

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

y esto está bien:

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


Para solucionar este problema, es posible que tengas algún problema extraño con tu código Swift. Por ejemplo, tener varias definiciones de IBOutlets porque estaba en el medio de copiar y pegar. Por lo general, es solo un error de sintaxis que no se pudo manejar.


Problema:

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

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

Solución:

  • Corrige el error detectado por Xcode
  • Cambie a un .swift diferente en Navigator, vuelva al original
  • El resaltado de sintaxis vuelve a aparecer y la ventana emergente "SourceKitService Terminated" desaparece

Reportado a Apple (# 17266321):

Detalles:

Resumen: Si intentamos imprimir un diccionario con valor como una matriz, una ventana emergente sigue apareciendo de forma inesperada diciendo: "SourceKit terminado. Funcionalidad del editor limitada temporalmente". Xcode congela y pierde el reconocimiento de contexto, lo que provoca que el texto se ennegrezca.

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

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

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

  3. El paso 3 hace que se comente el problema, lo que hace que Xcode vuelva a funcionar.

Resultados esperados: Xcode debería funcionar normalmente.

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

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


Salga de Xcode si está abierto. Luego desde la terminal de ejecución:

defaults delete com.apple.dt.Xcode

Esto restaurará Xcode a la configuración predeterminada. Abre Xcode y todo debería funcionar de nuevo.


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

  • Crear un nuevo proyecto
  • Añadir un marco y una biblioteca
  • Seleccione el framework cocoa touch.
  • Agrega un archivo Swift
  • Agrega una clase al archivo swift

Choques

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


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

Copia y pega la siguiente línea en la Terminal:

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


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

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

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

Edición: también según @Portland Runner:

De manera similar, si establece el tipo de retorno en el nombre de la función, obtendrá el error.

func foo() ->foo{}


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 bloque de extension , se bloqueará. Esto sucede incluso en proyectos de nueva creación.

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 { }


Tuve el mismo error con el proyecto anidado Objective-C ++ 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 volvió;)


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

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

Verifique el código efectuado debido a cambios en la versión 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 Xcode produce este error.

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

¡Buena suerte!


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


Un programa que consiste solo en 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 let lugar de var hace que el editor se comporte normalmente de nuevo. Xcode versión 6.0 (6A215l)


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


Xcode 6.1 Beta 3:

Tan pronto como defina un alias de tipo no privado (por ejemplo, typealias Foo = Int ) en un archivo Swift y escriba la letra c en otro archivo, SourceKitService se bloquea.

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?