Importar Project-Swift.h en un file de class Objective-C … no encontrado

Tengo un proyecto que se inició en Objective-C y estoy intentando importar un código Swift en los mismos files de class que he escrito Objective-C anteriormente.

He consultado los documentos de Apple sobre el uso de Swift y Objective-C en el mismo proyecto, así como la pregunta de SO así, pero aún no hay resultados: Sigo obteniendo el file no encontrado error después de poner #import "NewTestApp-Swift.h" ( NewTestApp es el nombre del Producto y el module).

Esto es lo que he hecho hasta ahora:

  1. En Define Modules , select YES para la aplicación.
  2. Asegúrate de que el nombre del Módulo del Producto no tenga ningún espacio en él (consulta la siguiente pregunta de la captura de pantalla)

He intentado usar #import "NewTestApp-Swift.h" dentro de ViewController.m , ViewController.h y AppDelegate.m pero ninguno de ellos ha funcionado.

¿Qué más estoy haciendo incorrectamente? Gracias por tu ayuda.


Captura de pantalla de la configuration:

introduzca la descripción de la imagen aquí


Errores que estoy encontrando actualmente:

introduzca la descripción de la imagen aquí

Me estaba topando con el mismo problema y no pude lograr que mi proyecto importara velozmente en classs obj-c. Usando Xcode 6, (debería funcionar para Xcode 6+) y fue capaz de hacerlo de esta manera …

  1. Cualquier class a la que necesite acceder en el file .h debe ser una statement de reenvío como esta

@class MySwiftClass;

  1. En el file .m SÓLO, si el código está en el mismo proyecto (module), entonces debe importarlo con

#import "ProductModuleName-Swift.h

Enlace a la documentation de la manzana al respecto

https://developer.apple.com/library/ios/documentation/Swift/Conceptual/BuildingCocoaApps/MixandMatch.html#//apple_ref/doc/uid/TP40014216-CH10-XID_87

Si el código Swift está dentro de un Módulo (como en su caso):

 #import <ProductName/ProductModuleName-Swift.h> 

Si el código Swift está dentro del proyecto (Swift y ObjC mixtos):

 #import <ProductModuleName-Swift.h> 

En su caso, debe agregar esta línea en el file * .m:

 #import <NewTestApp/NewTestApp-Swift.h> 

IMPORTANTE: mire el "<" en la statement de import

https://developer.apple.com/library/content/documentation/Swift/Conceptual/BuildingCocoaApps/MixandMatch.html

Cómo logré importar swift en objective-c:

  • Define el set de modules en YES (en proyecto, no en destino)
  • Nombre del module del producto establecido (en destino – no en proyecto)
  • En su ViewController.m, importe el código rápido con:

     #import "MyProductModuleName-Swift.h" 
  • Agregue un file rápido a su proyecto objective -c (Archivo -> Nuevo -> Swift) y Xcode creará el encabezado de puente del objective c a Swift, pero esto es crucial para hacer que funcione al revés, aparentemente.

Para la última pieza de este rompecabezas, gracias a Swiftoverload por darme count de que realmente agrego un file Swift a través de Xcode GUI y no solo arrastrando y soltando files swift existentes en mi proyecto para hacerlo funcionar: http://swiftoverload.com/using -swift-in-your-objective-c-project /

Si usa Xcode 8.2.1 y si mira Project > Build Settings> Objective-C Generated Interface Header Name , solo muestra un file de encabezado llamado Product -Swift.h

Esto significa que en lugar de importar cada module por separado del file Objective-C .m, utilizando el file individual -Swift.h, acaba de importar un Producto -Swift.h que agrega todos los modules Swift.

Encontré el mismo problema buscando la manera tradicional de importar modules por separado, pero la versión actual de Xcode y Swift 3 lo cambió para usar un solo encabezado para la import de todos los modules.

Estaba teniendo problemas para importar Swift a un proyecto Objective-C. Al final, busqué en la carpeta Derivied Data para comprobar qué estaba generando Xcode 7. El nombre de file era completamente diferente al que esperaba.

Una vez que tuve el nombre de file real, lo importé y el proyecto pudo buildse.

Había enfrentado el mismo problema con mi equipo cuando estaba trabajando en un proyecto usando git. Un desarrollador no ha actualizado Xcode a la última versión (7.3) que se requirió para la última versión de Swift 2.2. Entonces, el comstackdor no ha reconocido la nueva syntax de Swift y no ha podido generar la interfaz para la biblioteca Swift (projectname-swift.h). ¡Compruebe si la versión Xcode es la más reciente!

DEFINIR MÓDULOS: SÍ e importar "ProjectName-Swift.h" en el file .m de la class Obj-C

Esto me ayudó a acceder a las classs Swift en Obj-c.