ios - para - Xcode 8 con el proyecto mixto Swift y Objective-c generó el encabezado “ModuleName-Swift.h” no encontrado
xcode mac download (5)
Tengo un proyecto con Swift y Objective-C mixtos en Xcode 8 que usa el archivo de encabezado "ModuleName-Swift.h" generado para importar swift a las clases de Objective-c, pero el preprocesador no puede encontrar el archivo de encabezado generado y los lanzamientos Un error en la importación.
"Problema léxico o del preprocesador: ''No se encontró el archivo ModuleName-Swift.h''"
El proyecto se compila muy bien, pero el preprocesador arroja errores para el encabezado que no se encuentra y para cualquier clase Swift llamada dentro de la clase no hay resaltado de sintaxis o finalización de código. Es una lucha trabajar con clases de Swift en Objective-c que no son reconocidas por Xcode 8, pero aún así, compilar bien.
¿Alguna idea sobre cómo apaciguar el preprocesador en Xcode 8?
Necesitas agregar esto en tu configuración de compilación.
Puede haber un problema al migrar a Xcode 8, donde no habrá unspecified
en el archivo de encabezado Swift de configuración de compilación.
Esto si de killerz
Vaya a Configuración de compilación-> Nombre de encabezado de interfaz generado por Objective-C y establezca el valor en YourModule-Swift.h (esto generalmente ya está establecido, este es el nombre de archivo que necesita importar en el archivo .m #import "YourModule-Swift.h "
Si
- los objetivos normales de su producto funcionan bien, pero
- Obtienes el error al ejecutar tus objetivos de prueba ...
tenga en cuenta que cada destino utiliza (y debe usar) un nombre de archivo diferente para el Nombre de encabezado de interfaz generado por Objective-C .
Esto significa que no puede importar el archivo de encabezado generado en sus archivos .h
Objective-C, porque no se encontrarán en el destino de prueba:
En su lugar, debe mover estas declaraciones #import
a su Objective-C .m
(archivos de implementación), donde se construirán con éxito.
Si necesita consultar las clases Swift en un archivo .h
, use la directiva @class
, por ejemplo:
//
// ViewController.h
// import-example
//
#import <UIKit/UIKit.h>
@class SomeSwiftClass;
@interface ViewController : UIViewController
- (NSString *) titleFromGenerator:(SomeSwiftClass *)generator;
@end
Tiene este problema cuando tenemos múltiples objetivos. Si la variable Nombre de encabezado de interfaz generada por Objective-c en el compilador Swift de destinos recién creados es diferente del valor del objetivo original. Cambie al mismo valor con el objetivo original. Vea lo siguiente:
cambiar, newtargetname-Swift.h a originaltargetname-Swift.h para el nuevo objetivo
Tuve exactamente el mismo problema. Encontró la solución después de agregar un nuevo archivo apuntando a un solo objetivo (por error) y notando que no tenía problemas para leer las clases de Swift. Por lo tanto, si tiene varios destinos y, debido a la migración, no tuvo la necesidad de crearlos y ejecutarlos, sugiérale que lo haga.