xcode - the - Obteniendo "archivo no encontrado" en Bridging Header al importar frameworks Objective-C al proyecto Swift
xcode for windows (18)
Tengo un proyecto Swift para el que estoy tratando de importar marcos basados en ObjC. El marco está ubicado en un directorio bajo la ruta del proyecto y es referenciado por el proyecto en Xcode. También se agrega al "Enlace binario con bibliotecas" en la página "Crear fases" del proyecto.
Sin embargo, por alguna razón, parece que no puedo incluir el marco en el archivo Bridging-Header. Obtuve el siguiente error:
BridgingHeader.h:5:9: error: ''Parse/Parse.h'' file not found
#import <Parse/Parse.h>
^
<unknown>:0: error: failed to import bridging header ''BridgingHeader.h''
Cosas que he comprobado:
- El "Encabezado de compatibilidad de instalación de Objective-C" está establecido en "SÍ".
- La ruta de búsqueda de encabezado incluye la ruta a los marcos.
Estoy seguro de que me estoy perdiendo algo, así que si alguien tiene alguna pista, sería genial.
Acababa de duplicar un esquema existente y agregué otra configuración al proyecto. Tuve que agregar una configuración con el mismo nombre al proyecto del marco para que también se construya en la misma DerivedData/($AppName)/Build/Products/($CONFIGURATION_NAME)
. De lo contrario, el archivo .framework no se crea y, por lo tanto, no se puede importar.
Bueno, es un poco extraño, pero supongo que debe agregar un recurso a su fase "Copy Bundle Resources" de su objetivo de prueba para que cargue todos los encabezados de su objetivo principal de la aplicación. En mi caso, agregué main.storyboard
y se ocupó del error.
En mi caso, tuve que abandonar el simulador ...
Encontré una solución:
- El ajuste "Encabezado de puente de Objective-C" (también
SWIFT_OBJC_BRIDGING_HEADER
comoSWIFT_OBJC_BRIDGING_HEADER
) debe establecerse en el nivel de Destino, y NO en el nivel de Proyecto. Asegúrese de eliminar el valor de configuración en el nivel de Proyecto.
(Para mí, parece un error de Xcode, ya que no sé por qué lo soluciona).
Encontramos el mismo mensaje de error, con una causa completamente diferente.
Preparar:
- Objetivo de la aplicación, todo el código Obj-C
- Objetivo de prueba unitaria con un solo caso de prueba rápida y un encabezado de puente que hace referencia al código de la aplicación
Cuando agregamos el segundo caso de prueba rápida, después de una limpieza (o en la máquina de un compañero de equipo), vimos este error al construir el objetivo de prueba de la unidad.
Se corrigió agregando una clase ficticia Obj-C al objetivo de prueba de la unidad.
Este error apareció al instalar con Cocoapods la biblioteca CocoaImageHashing. El problema era que las rutas de búsqueda estaban equivocadas. Por lo tanto, en el nivel de destino, en Configuración de compilación -> Rutas de búsqueda -> Rutas de búsqueda de encabezado, las rutas correspondían a carpetas no existentes, por ejemplo "$ {RAÍZ_PODES} / Encabezados / Público / Incrustación de cacao", cuando la estructura de la carpeta Encabezados / Público / no existió. Agregué la ruta $ {PODS_ROOT} / CocoaImageHashing y el error desapareció.
Esto de alguna manera hizo el truco para mí:
- Proyecto limpio
- Carpeta de construcción limpia
- Reiniciar Xcode
Me encontré con el mismo problema hoy al tratar de usar un pod escrito en Objective-C en mi proyecto Swift, ninguna de las soluciones anteriores parecía funcionar.
¡En el archivo podfile tuve use_frameworks!
escrito. Comentando esta línea y luego ejecutando la pod install
nuevamente resolvió este problema para mí y el error desapareció.
Mi marco funcionaba antes y de repente dejó de funcionar, y ninguna de estas respuestas funcionó para mí. Eliminé el framework en Build Fases> Link Binary With Libraries y lo volví a agregar. Empecé a trabajar de nuevo.
Si ayuda a alguien
En mi caso, se agregaron mis archivos obj-c con una carpeta de referencia (las carpetas azules en xcode) y el encabezado no pudo encontrarlos. Acabo de agregar los archivos, no la carpeta, del buscador a xcode y resuelto.
Si usa cocoapods, intente reinstalar los pods ejecutando el siguiente comando.
pod install
Tengo el mismo problema. Cambié todas mis importaciones de #import "HMSegmentedControl.h"
a #import <HMSegmentedControl/HMSegmentedControl.h>
por ejemplo.
Tuve que agregar mi directorio lib
en las Rutas de búsqueda del encabezado del usuario:
En mi caso, el directorio lib
contiene el archivo .a
-library y algunos archivos de encabezado. Estos están incluidos en el archivo de encabezado de puente. Sin embargo, el veloz compilador no los encontraría. Solo cuando agregué ${PROJECT_DIR}/lib
a la ruta de búsqueda del encabezado del usuario se creó el objetivo de la prueba.
(Estoy usando Xcode 6.2 en Mavericks 10.9.5)
Tuve un problema similar con los pods. Básicamente, tratando de ejecutar mis pruebas de UI, Xcode se quejó de los pods perdidos. La solución a esto fue mucho más simple que cualquiera de los descritos anteriormente:
- ir al archivo del proyecto (principal no es un objetivo)
- haga clic en la pestaña "Información" (más a la izquierda)
- establecer la configuración adecuada del pod para el objetivo de las pruebas UI (sección "Configuraciones" justo debajo de "Destino de despliegue")
¡Trabajando!
Lo encontré en un hilo: https://github.com/CocoaPods/CocoaPods/issues/2695
Suena un poco como un error para las cápsulas de cacao, pero puedo ver razones por las que podría ser un caso complicado.
Tuve un problema similar y solo una solución funcionó para mí. Probé todo lo sugerido, y sabía que configuré mi encabezado de puente fino, porque tenía otra lib que funcionaba.
Cuando copié la biblioteca (arrastrar y soltar) en el proyecto, sin Cocoapods, solo después de eso pude importar los encabezados sin errores.
Usé la biblioteca de Facebook / Shimmer.
Tuve un problema y lo solucioné después de pasar 2 horas para encontrarlo. Mi entorno de la siguiente manera:
cocoapod 0.39.0
veloz 2.x
XCode 7.3.1
Pasos:
- ruta del proyecto: project_name / project_name / your_bridging_header.h
- En la sección Swift en Configuración de compilación, el encabezado de puente de Objective-C debe ser: nombre_proyecto / your_bridging_header.h
- En your_bridging_header.h , cambie todas las declaraciones de .ha # import
- En la clase que se usa your_3rd_party . Declarar importación your_3rd_party
Yo tuve el mismo problema. Para mí, la razón era que estaba usando el mismo encabezado de puente tanto para mi aplicación como para mi extensión de hoy. My Today Extension no incluye Parse, pero debido a que estaba definido en el encabezado de puente, intentaba buscarlo. Creé un nuevo encabezado de puente para mi extensión de hoy y el error desapareció.
(Actualizado a partir del 27 de mayo de 2017)
Xcode 8. Swift Project: importación de Objective C.
Cosas que saber:
- El archivo de encabezado de puente DEBE guardarse dentro de la carpeta del proyecto. (es decir, no se guarda en el mismo nivel que se guarda .xcodeproj, sino en un nivel más abajo en las carpetas donde se guardan todos los archivos c rápidos y objetivos). Todavía puede encontrar el archivo en el nivel superior, pero no vinculará correctamente y podrá importar archivos de Objective C en el archivo de encabezado de puente
- El archivo de encabezado de puente se puede nombrar cualquier cosa, siempre que sea un archivo de encabezado .h
- Asegúrese de que la ruta en Configuración de compilación> Compilador de Swift - General> Encabezado de puente de Objective C señale correctamente el archivo de encabezado de bridging que hizo
- IMPORTANTE: si sigues "no encontrado", intenta primero vaciar el archivo de encabezado de puente y borrar las importaciones que hayas escrito allí. Asegúrese de que el archivo de encabezado puente se puede encontrar primero, luego comience a agregar las importaciones objetivo c a ese archivo. Por alguna razón, producirá el mismo error "no encontrado" incluso si se encuentra pero no le gusta importarlo por alguna razón
- No debe #importar "MyBridgingHeaderFile.h" en ninguno de sus archivos C objetivo. Esto también provocará un error de "archivo no encontrado"