Tengo un proyecto Objective-C en Xcode 8 Beta 3. Desde la actualización, cada vez que intento compilar recibo el siguiente error:
Se requiere que "Usar la versión de lenguaje Swift heredado" (SWIFT_VERSION) esté configurado correctamente para los objetivos que usan Swift. Use el menú [Editar> Convertir> A sintaxis Swift actual ...] para elegir una versión Swift o use el editor de configuración de compilación para configurar la configuración de compilación directamente.
¿Alguien ha encontrado esto? Dado que es un proyecto Objective-C, no hay configuración de compilación para configurar Swift. También me he asegurado de que ninguna de las dependencias del proyecto o CocoaPods estén usando Swift. La única solución que tengo es usar Beta 2. ¿Alguna idea de cómo podría solucionar este problema?
También debo mencionar que estoy ejecutando OSX 10.12 Beta 2.
fuente
Respuestas:
Si está utilizando CocoaPods y desea que se repare automáticamente cada vez que está haciendo un
pod install
, entonces puede agregar estas líneas al final de su Podfile:EDITAR: Este problema ahora se soluciona si usa CocoaPods v1.1.1 o posterior. No olvide eliminar la
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES
configuración de los objetivos principales de su proyecto.fuente
2.3
lugar de3.0
Gran solución! Esto efectivamente hace el"Use Legacy Swift Language Version"
toNo
(o si lo cambia a2.3
élYes
). ¡Sin embargo, el beneficio de esta opción es que cada vezpod install
que configura esa configuración automáticamente! Increíble. Veo que tambiénSWIFT_VERSION
se establece en proyectos Obj-C . ¿Asumo que no hay ningún efecto adverso?pod install / update
. Esta solución agiliza las cosas. También puede actualizar su versión de Cocoapods ahora: también debería solucionar este problema.Acabo de encontrar una manera de arreglarlo.
Vaya a la configuración de compilación del proyecto o biblioteca y establezca el atributo Versión del compilador Swift "Usar versión de lenguaje Swift heredado" de No especificado a Sí o NO.
fuente
pod install
le recomiendo usar la respuesta de @Tulleb arriba.He estado ignorando este problema durante un tiempo y, mientras tanto, solo estaba trabajando en otras cosas, finalmente encontré la solución a mi problema.
Como mi proyecto es Objective-C, pensé que tal vez uno de los Pods que estoy usando estaba usando Swift, verifiqué cada Pod y ninguno de ellos lo estaba.
La solución final fue que mi modelo de Core Data estaba configurado para generar código en Swift a pesar de que los he generado manualmente en el menú Archivo> Nuevo> NSManagedObjectSubclass. Todo lo que tenía que hacer era cambiarlo a Objective-C.
fuente
Este problema también es visible en Xcode-8.1. Cuando agregamos un nuevo Target como Extension o Widget y la biblioteca de terceros se integra en un nuevo target con la ayuda de cocopods. Después de la instalación de Pod . Podemos enfrentar el mismo error que el anterior.
Cambie la versión Use Legacy Swift Language en cada configuración de compilación de la biblioteca a
fuente
Si está utilizando Xcode 8 o posterior
fuente
Agregue el siguiente código al final del podfile.
fuente
Estoy trabajando en un proyecto que tiene código mixto objetivo-c y swift. Anteriormente utilicé la versión 2.3 de swift y después de actualizar a swift 3 no pude construir el proyecto. Xcode se quejó con el mensaje de error mencionado.
Aparentemente, todavía había alguna versión obsoleta de Swift especificada en mi archivo project.pbxproj. Hubo swift 3.0.1 especificado:
Mientras que ya tenía 3.0.2 instalado:
Entonces, lo arreglé cambiando la versión de Swift en el archivo project-pbxproj a:
Parece que el especificador de versión de nivel de parche era demasiado específico.
fuente
En mi caso, acabo de hacer lo siguiente
Elija el destino del proyecto => Ir a la configuración de compilación => Busque “Versión de idioma Swift” => proporcione a Value la versión Swift actual
Eso es todo. Ha solucionado mi problema.
fuente
Tengo el mismo error. Intenté buscar "Usar versión de lenguaje Swift heredado", pero no lo encontré. Estoy usando Xcode 8.3.3 Después de navegar demasiado y trabajar, encontré esta solución, y esto funcionó para mí.
fuente
establezca "Usar versión de lenguaje Swift heredado" en "SÍ" si usa una versión anterior de swift en su proyecto o cualquier tercero de swift. "No" si su proyecto se actualiza a la versión rápida actual. Si no configura su versión rápida, después de cada actualización e instalación, el marco de trabajo de pod debe especificar esto.
fuente
De hecho, tuve que hacer una búsqueda de "Legacy Swift" para poder cambiarlo de no especificado a "Sí". Cuando simplemente me desplacé a la sección descrita anteriormente, no pude cambiarlo. Espero que esto ayude a alguien.
fuente
Mi proyecto está escrito en Swift. Tengo ese mismo error con
fastlane
. Lo que sucedió fue que mi Xcode se actualizó automáticamente, así que tuve que actualizar mi proyecto a Swift 3.0. Tengo un montón de errores. La reparación y la depuración llevaban demasiado tiempo y no valía la pena en ese momento, así que decidí instalar una versión anterior de Xcode. Revertí mi código a 2.3. Entoncesfastlane beta
ya no funcionaba. Resulta que necesitaba configurar la herramienta de línea de comandos en 7.3.fuente
Estaba teniendo este mismo problema y lo resolví haciendo lo siguiente:
En Proyecto> Configuración de compilación:
Always Embed Swift Standard Libraries = $(inherited)
Use Legacy Swift Language Version = YES
Luego en mi Podfile:
config.build_settings['SWIFT_VERSION'] = '3.0'
El uso de estas tres configuraciones eliminó todas las advertencias y me permitió compilar correctamente.
Lo más oscuro y lo que realmente progresó en la compilación fue cambiar SWIFT_VERSION en el Podfile de 3 a 3.0 como se sugiere aquí .
fuente
A partir de XCode 8, puede usar swift 2.3 a pesar de que XCode 8 usa swift 3.x como versión predeterminada de swift. Para usar swift 2.3, simplemente active la opción Usar versión de lenguaje antiguo de Swift a SÍ desde la configuración de compilación, luego XCode usará Swift 2.3 para ese objetivo de proyecto.
fuente
Antes de probar soluciones complicadas, aquí hay una comprobación básica que debe hacer si es nuevo en Cocoapods y tiene este problema.
Es posible que deba:
platform :ios, '10.1' # Put the right version and no #platform here use_frameworks! # For swift pod "MyPod" # Your mean pod :)
pod install
vuelva a ejecutarQuizás es solo eso.
Si no, puedes ir arriba ;-)
fuente
Tuve este mismo problema después de actualizar a xcode 8.3.2 pero la opción "Usar lenguaje rápido heredado" desapareció. Esta parece ser la opción para cambiar ahora:
Usé esta solución con Alamofire y otras bibliotecas y todo funciona bien.
fuente
Vaya a Configuración de compilación del proyecto para el proyecto y Target haga debajo de dos.
Cambiar a la última
Swift 3
.Error resuelto
Si se solucionó su corrección de error, por favor dale me gusta.
fuente
En Xcode 9 beta. Vaya a Configuración del proyecto, Configuración de compilación, busque la Versión de idioma Swift. En Xcode 9 debe especificar si está utilizando Swift 3.2 o Swift 4.
fuente
Si cambia
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES
para queNO
todavía no funcione, es porque el problema de xcode no es su problema. Haciendo los siguientes pasos:1.Cambie la
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES
propiedad para estarYES
en el objetivo de advertencia2.A continuación, aparecerá una advertencia en la barra izquierda que recomienda cambiar a Swift 3.0
3. Luego cambie de nuevo a
NO
. Reconstruya el proyecto, ¡el xcode finalmente detectará su cambioNO
!¡Problema resuelto en este caso!
fuente