objective-c xcode swift ios8 chartboost

objective c - Error al importar el encabezado de puente



objective-c xcode (9)

Así es como lo resolví (¡y funciona!):

  1. Cree su archivoProjectName-Bridging-Header.h en la raíz de su proyecto
  2. Incluya en ese archivo el .h de las clases que desea exponer y use en su proyecto swift
  3. Vaya a suProyecto-> Configuraciones de compilación-> Rutas de búsqueda, y establezca en Sí la tecla "Buscar siempre rutas de usuario".
  4. Establezca "Rutas de búsqueda de encabezado de usuario" en la ruta raíz de su proyecto.

Eso es.

Aparentemente, Xcode se pierde las carpetas de terceros cuando se copian en su proyecto

Estoy en Xcode 6.3, Swift 1.2.

He leído muchas preguntas y respuestas que tratan con un problema similar, pero todavía tengo que encontrar una solución. Si alguien pudiera arrojar algo de luz, sería maravilloso.

Creé un proyecto Swift y ahora quiero combinarlo con algo de Objective-C. Mi "error al importar el encabezado puente" solo se produce cuando intento #importar mi archivo Chartboost.h. Entonces, mientras no tenga nada en mi archivo de encabezado de puente, Xcode lo encuentra y no me da ningún problema. Pero una vez agregué esto:

#import <Chartboost/Chartboost.h>

Recibo el error junto con otros 38 errores que dicen "Error del compilador de Swift: aquí no se permite la definición de la función".

He importado correctamente mi marco. Y mi camino de búsqueda marco es correcto. Y es solo cuando importo el framework Chartboost. UIKit y Fundación funcionan bien.

Esto es lo que hice antes del problema ... Primero, creé un nuevo archivo Obj-C y luego hice clic en "Sí cuando Xcode me dio una ventana emergente preguntándome si podía configurar un encabezado puente. Esto creó" FunFacts -Bridging-Header.h "

Luego me aseguré de que la ruta del encabezado puente de Objective-C era correcta en Swift Compiler - Generación de código.

Incluso puse una ruta muy específica /Users/me/Desktop/FunFacts/FunFacts-Bridging-Header.h y todavía dice "No se pudo importar".

También configuré el Módulo de Definiciones en "Sí" (porque escuché que puede ayudar). Y el nombre de mi módulo de producto es FunFacts.

¿Por qué no se puede importar FunFacts-Bridging-Header.h cuando intento agregar #import?


¡Descubrí 2 soluciones!

1) Esta no es la forma más bonita de hacerlo, pero copio y pegué todo mi código de mi archivo Chartboost.h en mi archivo Bridging-Header.h en lugar de importar. Esto funciono Pero sabía que había una mejor manera, así que seguí cazando ...

2) La solución correcta, creo, es lo que hice a continuación. Las rutas de búsqueda del marco de mi proyecto (no objetivo) estaban vacías. Entonces, seguí adelante y agregué la ruta al SDK de Chartboost como: / Users / me / Desktop / Apps / SDKs / Chartboost
Ahora se construye y se ejecuta sin problemas y no tuve que copiar y pegar todo en el encabezado de puente. Todo lo que se necesitaba era

#import <Chartboost/Chartboost.h>

Si alguien tiene un problema similar, simplemente lea lo que hice en mi pregunta y luego continúe con esta respuesta.


El problema como el tuyo me desconcierta. Pero encontré una solución.

#import <Foundation/Foundation.h>

Debes poner este código (↑) antes de tu código. Esta es solo mi solución (↓).

#import <Foundation/Foundation.h> #import <Chartboost/Chartboost.h>

¡Buena suerte!


La respuesta es realmente muy simple.

Asegúrese de que está agregando la ruta del encabezado de puente en SWIFT_OBJC_BRIDGING_HEADER en la sección de destino en lugar de la sección del proyecto.


Respondí esto en otro post: Problemas de integración de Chartboost con XCode 6.1

EXPLICACIÓN:

Parece que algunos pods y bibliotecas no se molestan en importar los marcos básicos, ya que esperan que su código ya los tenga. Esto no funciona con Swift, ya que la forma de importar marcos ha cambiado. Todo lo que necesita hacer es agregar los marcos necesarios en su archivo de encabezado de puente.

RESPONDER:

Depende de qué errores arroje el compilador. Si se queja sobre NSObject , NSString , etc ... debe agregar #import <Foundation/Foundation.h> en la parte superior de su archivo de encabezado puente.

Si se queja sobre UIView , UIButton , etc ... debe agregar #import <UIKit/UIKit.h> en la parte superior de su archivo de encabezado puente.


Si tiene estas líneas en su encabezado de puente:

#ifndef Bridging_Header_h #define Bridging_Header_h #endif /* Bridging_Header_h */

Simplemente elimínelos, resolverá los problemas de Foundation y UIKit.


Si usa CocoaPods esto podría ahorrar su tiempo. 1) Lo primero que debes hacer es revisar tu Podfile, será como:

target ''YourProjTests'' do inherit! :search_paths end target ''YourProjUITests'' do inherit! :search_paths end

2) Abra la configuración baseproj y establezca los objetivos de prueba correctos Pods-Proj.debug, vea la imagen adjunta:


Tuve un problema casi idéntico y encontré una solución que funcionó para mí.

Mi problema era que el Encabezado de Enlace no estaba en TODOS mis objetivos.

Estaba en mi proyecto pero no en mi objetivo de UnitTest. Así que lo agregué a mi UITest y UnitTest y comenzó a funcionar sin problemas.


Un caso es que si import <Chartboost+Extention/Chartboost+Extention.h> ,

La forma correcta es import <Chartboost**_**Extention/Chartboost+Extention.h> ,

Solo porque la compilación del Pod cambiará el nombre de la estructura de Chartboost+Extention en Chartboost_Extention