color bar ios xcode indexing swift3 xcode8

ios - bar - Xcode 8.0 Swift 3.0 indexación lenta y construcción



uinavigationitem title color (16)

Después de agregar la configuración,

SWIFT_WHOLE_MODULE_OPTIMIZATION = YES

nuestro proyecto construye tiempos de compilación limpios de 1200 a 180 para 650 archivos rápidos. Pero esto provocará un aumento en la falla de compilación. Cada cambio necesita 180 segundos para compilar cuando el aumento de compilación solo necesita 60 segundos

Instalé Xcode 8.0 y convertí Swift 2.2 a 3.0 (ese proceso también tomó mucho tiempo, dejé mi Mac funcionando toda la noche). No tengo un gran proyecto (unos 20 archivos). También estoy usando Pods . La indexación de la versión anterior de Xcode (<8.0) funcionó rápido, pero ahora, después de la actualización, la barra de progreso está atascada en una posición (ya estoy esperando una hora).

Cosas que he probado que no me ayudaron:

  • Limpié la carpeta DerivedData y reinició Xcode
  • Limpió el proyecto y reinició Xcode
  • Directorio Pods eliminado con <project>.xcworkspace y luego instalado nuevamente
  • Mac reiniciado
  • Intenté construir proyecto sin Pods
  • Xcode reinstalado
  • Intenté en otra Mac con proyecto clonado

Realmente no es genial hacer tales lanzamientos de software cuando los desarrolladores tienen que pasar horas resolviendo problemas tan ridículos. Es muy decepcionante. Alguna idea de cómo solucionar este problema?


Encontré el mismo problema de indexación, pero ocurrió solo cuando estaba ejecutando / depurando en un dispositivo y luego cambié a otro dispositivo en la barra de herramientas superior izquierda (Target> iPhone).

Ninguna de las soluciones anteriores funcionó para mí.

Mi solución: eliminé mi copia de trabajo de git local y cloné una nueva de mi ''origen''.

(¿Hay algunos archivos ''mágicos'' dentro de las carpetas xcuserdata / shared / session, etc. que pueden haber causado este problema?)


Es un error de Xcode (Xcode 8.2.1) y sucederá cuando tenga un literal de diccionario grande o un literal de diccionario anidado. Debe dividir su diccionario en partes más pequeñas y agregarlas con el método append hasta que Apple corrija el error.


Esto funciona para mí en Xcode 8.2.1 y Swift 3 cuando la "indexación" está atascada:

Siempre tengo dos proyectos abiertos, un proyecto ficticio y el proyecto en el que estoy trabajando. También tengo un dispositivo iPad Air conectado en el que ejecuto mis proyectos. Cuando mi proyecto se atasca en "Indexación", cambio a mi proyecto ficticio y ejecuto mi proyecto en mi dispositivo iPad Air conectado. Luego detengo el proyecto y vuelvo al proyecto en el que estoy trabajando y la "Indexación" está mágicamente terminada. Esto también debería funcionar solo con el simulador, si no tiene un dispositivo físico conectado.


Haga una copia de seguridad de su proyecto, elimine el último proyecto de actualización después de la copia de seguridad y luego reinicie Xcode simple :-)


He tenido el mismo problema solo desde que actualicé a Swift 3 / XCode 8 y parece ser causado por literales de matriz grande.

Pude solucionar el problema agregando anotaciones de tipo a las variables que se asignan a la matriz literal, por ejemplo

let array: Array<String> = ["1", "2", "3", "4", "5", "6", "7", "8"]

en vez de

let array = ["1", "2", "3", "4", "5", "6", "7", "8"]


Lo que resuelve esto para mí es usar teclas para establecer valores de diccionario

let dict: [string:any]() dict["key"] = "value" dict["key1"] = "value" dict["key2"] = "value" return dict

Si tiene un diccionario largo, puede o no causar un ciclo de compilación que resulte en tiempos de compilación largos. Cualquier cosa más larga que 8 teclas debe configurarse.


Mi problema fue el diccionario. Tuve un gran diccionario variado.

let values = ["address":addressTextField.text,"city":cityTextField.text,"zipCode":zipCodeTextField.text,"state":stateTextField.text,"pet":answerLabel.text,"rentStart":rentStartTextField.text,"rentEnd":rentEndTextField.text,"rent":rentTextField.text,"phone":phoneTextField.text,"email":emailTextField.text,"status":leaseStatusTextField.text,"bedrooms":bedroomTextField.text,"parking":parkingLabel.text,"furnish":furnishLabel.text,"utilities":utilitiesTextField.text,"laundry":laundryTextField.text,"paymentCycle":paymentCycleTextField.text,"note":noteTextView.text]

Lo desglosé a:

var values = ["address":addressTextField.text] values["city"] = cityTextField.text values["zipCode"] = zipCodeTextField.text values["state"] = stateTextField.text values["pet"] = answerLabel.text values["rentStart"] = rentStartTextField.text values["rentEnd"] = rentEndTextField.text values["rent"] = rentTextField.text values["phone"] = phoneTextField.text values["email"] = emailTextField.text values["status"] = leaseStatusTextField.text values["bedrooms"] = bedroomTextField.text values["parking"] = parkingLabel.text values["furnish"] = furnishLabel.text values["utilities"] = utilitiesTextField.text values["laundry"] = laundryTextField.text values["paymentCycle"] = paymentCycleTextField.text values["note"] = noteTextView.text values["owner"] = userID


No es que piense que esto está relacionado con el problema de OP, pero XCode 8 para mí recientemente se detuvo. Finalmente descubrí que fue mi error (y recuerdo haberlo hecho inadvertidamente): agregué XCode.app como referencia de Framework. Básicamente, esto hizo que XCode buscara e indexara toda la carpeta XCode.app. Una vez que vi el error y eliminé el Framework, volvió a funcionar :)


Probé las soluciones anteriores, pero el problema aún ocurre. La depuración también funciona raro. Después de algunos días de investigación, encontré la solución a continuación.

Seleccione el objetivo principal> Configuración de compilación. Configurando como imagen a continuación.


Resolví el problema comentando todos los archivos y luego eliminando los comentarios uno por uno. Descubrí que el problema todavía está en la declaración de matriz como se describe here .

Tenía un código como este y el proyecto no estaba indexando:

class { var first: String! var second: String! var third: String! var fourth: String! var fifth: String! func abc() -> [String] { var array = [first, second, third, fourth, fifth] } }

Lo he cambiado a esto y la indexación comenzó a funcionar:

class { var first: String! var second: String! var third: String! var fourth: String! var fifth: String! func abc() -> [String] { var array = [first] array.append(second) array.append(third) array.append(fourth) array.append(fifth) } }


Tenía una función que tardó más de un minuto en compilar, y después de investigar un poco, descubrí que el culpable estaba verificando si había transcurrido suficiente tiempo desde una fecha almacenada:

let myStoredDate: Double = // Double representing a time in the past // if at least one week (60 * 60 * 24 * 7 seconds) has passed since myStoredDate if Date().timeIntervalSince1970 - myStoredDate > (60 * 60 * 24 * 7){ // do stuff }

La compilación de este código tardaría más de 10 segundos: junto con la repetición de este código con diferentes números varias veces, la compilación tardó demasiado. Pude arreglar esto precalculando el intervalo

let myStoredDate = // Double representing a time in the past //it is important to explicitly specify that the variable is a Double let interval: Double = 60 * 60 * 24 * 7 if Date().timeIntervalSince1970 - myStoredDate > interval{ // do stuff }

Después de hacer esto con las ~ 10 veces que estaba comprobando, el tiempo de compilación se redujo de más de un minuto a solo unos pocos milisegundos.

Es extremadamente probable que este problema también ocurra con la combinación de la infección de tipo y las matemáticas en otros lugares, así que asegúrese de que nada de esto ocurra en ningún otro lugar de su código.


Tuve el mismo problema y lo resolví revisando minuciosamente mi código línea por línea, resulta que Swift 3 prefiere la interpolación de cadenas en lugar de usar el símbolo +, es decir

let url = "http://yahoo.com" + "someWebPage" + "whereItsInteresting"

Si ha estado usando el estilo de código anterior, reemplácelo por;

let url = "http://yahoo.com/(someWebPage)/(whereItsInteresting)"

Y su tiempo de construcción volverá inmediatamente a la normalidad.


Tuve un problema similar y seguí esta guía para depurar: http://irace.me/swift-profiling Mi problema era que tenía un operador de fusión nula en algunas cadenas, por ejemplo:

let name = "/(someString ?? "")"

y cuatro métodos con esto estaban causando 2 minutos de tiempo de construcción adicional.


Vaya a la configuración del proyecto, luego Editor> Agregar configuración de compilación> Agregar configuración definida por el usuario y agregue lo siguiente:

SWIFT_WHOLE_MODULE_OPTIMIZATION = YES

Agregar esta bandera redujo nuestros tiempos de compilación de compilación limpia de 7 minutos a 65 segundos para un proyecto rápido de 40KLOC, milagrosamente. También puede confirmar que 2 amigos han visto mejoras similares en proyectos empresariales.

Solo puedo suponer que se trata de algún tipo de error en Xcode 8.0


para aquellos que quieren encontrar dónde está "atrapado" el compilador

Agregar a Other Swift Flags -Xfrontend -warn-long-function-bodies=50

marque la respuesta completa here