Siguiendo las instrucciones, creé un encabezado de puente y lo agregué a mi proyecto. Desafortunadamente, ocurrió el siguiente error:
: 0: error: no se pudo importar el encabezado de Objective-C '--- ruta - a --- encabezado / .... h'
En la configuración de compilación, agregué una cadena de ruta de búsqueda de encabezado a la ubicación del encabezado de puente, pero nada ayudó.
¿Alguien ha experimentado este problema?
ios
swift
xcode6
bridging-header
objective-c-swift-bridge
Nikita Pronchik
fuente
fuente
Respuestas:
¡Tenga cuidado de agregar el archivo a la carpeta porque su error se está quejando! He cometido el mismo error, si crea el archivo desde Xcode, irá a la carpeta: Proyecto-> Proyecto-> Encabezado.h
Y Xcode está buscando Project-> Header.h
¡Eso significa que debe colocar el archivo dentro de su carpeta de proyecto (ProjectName-> ProjectNameFolder)!
Espero que ayude ;)
ACTUALIZADO: No estoy seguro de si entendí lo que quieres decir, pero prueba esto para resolver tu problema:
1. Elimina todos los archivos puente que creaste hasta ahora.
2. Seleccione la carpeta principal del proyecto y presione nuevo archivo-> iOS-> Archivo de encabezado.
3. Escriba sus importaciones en el archivo de encabezado creado.
4. Seleccione el proyecto dentro de Xcode-> Build Settings, escriba en el campo de búsqueda: bridging e ingrese la clave SWIFT_OBJC_BRIDGING_HEADER el nombre de su archivo de encabezado o la ruta hacia él.
Si sigue estos pasos, su archivo de encabezado se creará en la ubicación correcta.
: D Espero que ayude!
fuente
En mi caso, esto fue en realidad un error como resultado de una referencia circular. Tenía una clase importada en el encabezado de puente, y el archivo de encabezado de esa clase estaba importando el encabezado rápido (
<MODULE_NAME>-Swift.h
). Estaba haciendo esto porque en el archivo de encabezado Obj-C necesitaba usar una clase declarada en Swift, la solución era simplemente usar el@class
declarativo.Básicamente, el error decía "No se pudo importar el encabezado de puente", el error que se encuentra arriba dijo
<MODULE_NAME>-Swift.h
que no se encontró el archivo, que fue un error que apuntaba a un archivo de Encabezado Obj-C específico (es decir, un Controlador de Vista).Al inspeccionar este archivo, noté que tenía el -Swift.h declarado dentro del encabezado. Mover esta importación a la implementación resolvió el problema. Así que necesitaba usar un objeto, llamemoslo
MyObject
definido en Swift, así que simplemente cambié el encabezado para decirfuente
Encuentra el camino en:
Configuración de compilación / Compilador Swift - Generación de código / Encabezado de puente de Objective-C
y eliminar ese archivo. Entonces deberías estar bien.
fuente
Esto probablemente solo afectará a un pequeño porcentaje de personas, pero en mi caso mi proyecto estaba usando CocoaPods y una de esas cápsulas tenía una subespecificación con sus propios CocoaPods. La solución fue utilizar las importaciones de ángulo completo para hacer referencia a cualquier archivo en los sub-pods.
Más bien que
fuente
Para mí, al eliminar los datos derivados que lo arreglaron, noté que incluso si salgo de una confirmación anterior, sucede el mismo problema.
Puede llegar a esa opción desde Ventana-> Proyectos.
fuente
Para mí fue porque olvidé agregarlo a la Configuración de compilación del objetivo.
fuente
"necesitamos decirle a Xcode dónde buscar los archivos de encabezado que estamos enumerando en nuestro encabezado de puente . Busque la sección Rutas de búsqueda y cambie la configuración de nivel de proyecto para Rutas de búsqueda de encabezado de usuario , agregando una entrada recursiva para los 'Pods' directorio: Pods / ** " http://swiftalicio.us/2014/11/using-cocoapods-from-swift/
fuente
También he experimentado este problema y lamentablemente es solo un error en el SDK + Xcode. Hablé con un ingeniero en WWDC, sobre este y algunos otros problemas que estaba teniendo con CloudKit. Estos errores se abordarán en la próxima semilla de Xcode.
Es la parte divertida sobre el uso de software beta.
fuente
para otros que tienen problemas para agregar una clase rápida en el proyecto del objetivo-c. Esto es lo que funciona para mí:
y eso es. ahora cree la clase swift en su código como si fuera el objetivo-c.
fuente
Importé en algunos archivos de archivos de encabezado bridgin de cocoapods que no estaban en una forma adecuada.
En lugar de importar
escribí
Y este fue mi ENORME error
fuente
Agregue un archivo temporal Objective-C a su proyecto. Puedes darle el nombre que quieras.
Seleccione Sí para configurar un encabezado de puente de Objective-C.
Elimine el archivo temporal de Objective-C que acaba de crear.
En el archivo projectName-Bridging-Header.h que acaba de crear, agregue esta línea:
'#import <GoogleMaps / GoogleMaps.h>'
Edite el archivo AppDelegate.swift:
Sigue el enlace para ver la muestra completa
fuente
Para mí no estaba seleccionando 'Copiar elementos si es necesario' en la ruta de destino al agregar el marco. Simplemente vuelva a agregar el marco con esta opción seleccionada.
fuente
Después de los primeros días de lucha, finalmente logré integrar con éxito el registro de Facebook en mi aplicación iOS. Estos son los pasos (supongo que ya ha instalado Facebook SDK v4.1 o superior en sus máquinas):
Agregue información en la lista como se menciona aquí
Crea tu aplicación. Y wohoo! sin errores de tiempo de compilación.
fuente
Tengo el mismo problema por diferentes razones, aquí está mi caso , construyo un proyecto que necesita que se incluya el menú de diapositivas, estoy usando SWRevealViewController lib para abordar eso
cuando importo los archivos de la biblioteca, agrego una subcarpeta (SWRevealViewController) en Archivos de soporte para archivos .h && .m, activa dos errores, no se puede importar el puente y no se encuentra SWRevealViewController.h.
Como lo arreglo
cuando muevo archivos a Archivos de soporte directamente (eliminar subcarpeta), SWRevealViewController.m se agrega automáticamente a Fases de compilación -> Compilar fuentes y el problema desaparece
fuente
Experimenté ese tipo de error cuando estaba agregando una extensión Today a mi aplicación. El objetivo de compilación para la extensión se generó con el mismo nombre de encabezado de puente que el objetivo de compilación de mi aplicación. Esto condujo al error, porque la extensión no ve los archivos enumerados en el encabezado de puente de mi aplicación.
Lo único que debe hacer es eliminar o cambiar el nombre del encabezado de puente para la extensión y todo estará bien.
Espero que esto ayude.
fuente
De hecho, creé un archivo OSX Source Objective C vacío bajo el proyecto (donde están todos mis archivos swift).
Agregué las importaciones y luego eliminé el archivo .m .
fuente
Entre las otras correcciones, tuve el error cuando intenté hacer Producto-> Archivo. Resulta que tuve esto:
Después de configurarlo en esa última línea, funcionó.
fuente
Tuvo un problema similar que no se pudo resolver con ninguna de las soluciones anteriores. Mi proyecto usa CocoaPods. Noté que junto con los errores recibí una advertencia con el siguiente mensaje:
Entonces la solución fue bastante simple. Para el proyecto Pods, cambie el indicador Construir solo arquitectura activa a No y el error original desapareció.
fuente
Configure Precompile Bridging Header en No solucionar el problema para mí.
fuente