Xcode 8 con proyecto mixto Swift y Objective-c generado " moduleName-Swift.h " encabezado no encontrado
Tengo un proyecto con Swift mixto y Objective-C en Xcode 8 que utiliza el "moduleName-Swift" generado.h " archivo de cabecera para importar swift en las clases Objective-c, pero el preprocesador no es capaz de encontrar el archivo de cabecera generado y lanza un error en la importación.
"Problema léxico o Preprocesador : 'moduleName-Swift.h archivo no encontrado '"
El proyecto compila 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 Swift en Objective-c que no son reconocidas por Xcode 8, pero aún así compilar bien.
¿Alguna idea sobre cómo apaciguar al preprocesador en Xcode 8?
5 answers
Tuve exactamente el mismo problema. Encontró la solución después de agregar un nuevo archivo apuntando a un solo objetivo (por error) y notar que no tenía ningún problema para leer las clases Swift. Por lo tanto, si tiene múltiples destinos, y ya que la migración no tuvo la necesidad de compilarlos y ejecutarlos, sugiera que lo haga.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-09-28 16:02:23
Tenemos este problema cuando tenemos varios objetivos. Si la variable Nombre de encabezado de interfaz Generado por Objective-c en el compilador Swift de destinos recién creados es diferente del valor del destino original. Cámbialo al mismo valor que el destino original. Véase lo siguiente:
Change, newtargetname-Swift.h to originaltargetname-Swift.h para el nuevo objetivo
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-04-19 14:21:52
Para solucionar este problema Xcode 9.2, Después de una larga investigación llegué a saber que mi "Nombre de encabezado de interfaz generado por Objective-c" lleva el nombre del Nombre del producto " productname-Swift.h"
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-01-09 09:49:36
Necesitas agregar esto en tu configuración de compilación.
Puede haber un problema al migrar a Xcode 8, donde tendrá unspecified
en el archivo de encabezado Swift de configuración de compilación.
Esto si de killerz
Ir 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 .m archivo # import " YourModule-Swift.h "
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-05-23 12:03:01
Si
- los objetivos normales de su producto funcionan bien, pero
- obtiene el error al ejecutar sus objetivos de prueba {
Tenga en cuenta que cada destino usa (y debería usar) un nombre de archivo diferente para el nombre de cabecera de la interfaz Generada por Objective-C.
Esto significa que no puede importar el archivo de encabezado generado en sus archivos Objective-C .h
, porque no se encontrarán en el objetivo de prueba:
En su lugar, debe mover estos #import
sentencias en su Objective-C .m
(archivos de implementación), donde se construirán con éxito.
Si necesita hacer referencia a 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
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-08-03 18:56:12