ios xcode swift xcode7.3

ios - Problemas de resaltado de sintaxis de Xcode 7.3 y finalización de código con Swift



xcode7.3 (5)

Puede que ya no sea necesario, pero aún quiero publicar esto:

En el momento de esta publicación, la versión más reciente de cocoapods (1.0.0.beta.8) requiere que definas pods para cada objetivo de Xcode.

En mi caso, tuve una compilación de clase para el objetivo del proyecto y para un objetivo de prueba. Agregué un pod solo al objetivo principal, debido a la pereza.

Ahora, trabajando en el código de la clase A , agregué el framework pod usando import NAME e intenté usar las clases del framework. Xcode no resaltaría el código particular donde utilizo las nuevas clases, pero la compilación y la ejecución funcionan bien. En el diálogo de finalización, el tipo de la variable era <<error type>>

La forma de resolver este problema: en el archivo Podfile, agregue el pod recién agregado a todos los destinos, la clase A es miembro de.

Ahora Xcode encuentra los marcos necesarios para todos los objetivos y el resaltado de código funciona nuevamente.

EDIT 1:

Una posible solución es definir una lista de pod compartidos, como en mi ejemplo:

platform :ios, ''8.4'' use_frameworks! inhibit_all_warnings! def all_pods pod ''MPMessagePack'' pod ''SwiftyDispatch'' pod ''BFKit'' pod ''Timepiece'' pod ''Alamofire'' pod ''AlamofireSwiftyJSON'' end def testing_pods pod ''Quick'' pod ''Nimble'' end target ''App'' do all_pods end target ''AppLogicTests'' do all_pods testing_pods end target ''AppUITests'' do pod ''RxTest'' all_pods testing_pods end post_install do |installer| installer.pods_project.targets.each do |target| puts target.name end end

Esto agregará todos los pods a todos los objetivos y agregará todos los pods de prueba a los objetivos. Junto a estos agregué ''RxTest'' a los AppUITests.

(Los pods elegidos son ejemplos de mis proyectos, sin publicidad prevista :-))

Tengo un problema extremadamente frustrante con XCode 7.3 (sin embargo, este problema persiste desde que instalé XCode 7.2) y el código Swift, y espero que otros hayan tenido este problema y sepan cómo resolverlo. El resaltado de sintaxis y la finalización del código funcionan perfectamente bien en los archivos de Objective-C, y también funcionan bien cuando se llaman a otros objetos Swift dentro del código Swift. Sin embargo, cualquier objeto o método de Objective-C mencionado en el código Swift no obtiene resaltado de sintaxis, y XCode no completará NINGÚN método o propiedad declarada por Objective-C. Todo compila y funciona bien.

También debería agregar que también he intentado hacer una instalación completamente limpia de XCode. Eliminé todos mis datos derivados, eliminé todos los cachés de XCode y eliminé mis archivos de preferencias de XCode (además de obviamente borrar el archivo XCode.app antes de volver a instalar).

Está haciendo que sea extremadamente difícil de desarrollar en Swift. No quiero hacer esto, pero si no puedo encontrar una manera de resolver esto, me veré obligado a volver a utilizar Objective-C.


Si ninguno de los anteriores le funcionó y está usando Cocoapods, puede intentar cambiar a Cartago.

Probé todas las sugerencias que pude encontrar en Google sin ningún resultado. Pero consistentemente Cocoapods parecía estar surgiendo como una razón con muchos intentos de arreglarlo. He estado leyendo sobre Carthage, y cómo no modifica su proyecto, lo obliga a usar un espacio de trabajo, o potencialmente llena su carpeta de compilación con archivos de encabezado (lo que confunde a Xcode y puede hacer que el resaltado de sintaxis y el autocompletado se rompan).

Después de hacer el cambio todavía no me he encontrado con ningún problema, y ​​para ser sincero, prefiero los pequeños gastos generales para tener una solución limpia. Esta publicación realmente me llevó a casa.


Tengo el mismo problema. Pero finalmente lo resolvió. Hago dos cambios, no estoy seguro de cuál es el punto clave, pero puedes probarlos todos.

  1. eliminar el caché del módulo

Dentro de la misma carpeta que los datos derivados de su proyecto hay un caché de módulo. Cuando Code Completion dejó de funcionar, eliminarlo lo solucionó.

Cierre Xcode y elimine el directorio ~ / Library / Developer / Xcode / DerivedData / ModuleCache .

  1. cambiar el valor Habilitar módulos

Diríjase a la Configuración de compilación de su objetivo y luego active Habilitar módulos

Si es , cámbielo a No , y puede obtener algún error de compilación, simplemente cámbielo a .

Después de los dos pasos anteriores, debe Limpiar (Shift + Command + K) su proyecto.

Por ahora, puedes arreglar el problema.


Tuvimos el mismo problema en un proyecto mixto ObjC / Swift. Intenté todas las sugerencias sobre eliminar datos derivados, etc., en vano. Algunas veces ayudó, pero no de manera reproducible y después de un tiempo dejó de funcionar. La publicación de Galvin en esta publicación me puso en la pista de la configuración de construcción relacionada con el Módulo. Sin embargo, fue otra configuración que resolvió la finalización / coloración del código de una manera reproducible: establecer DEFINES_MODULE (en Packaging) de YES a NO para nuestro proyecto principal era la solución.

Notas:


Parece que el problema fue con CocoaPods. Estaba usando Cocoapods como una biblioteca estática en lugar de como marcos. El cambio a marcos (usando use_frameworks! En mi Podfile) e importar las bibliotecas a Swift ha resuelto todos mis problemas. Supongo que todos los encabezados de biblioteca de terceros eran demasiado para procesar XCode. De cualquier manera, el problema ahora está resuelto. Espero que esto ayude a alguien en el futuro.