¿Cómo puedo importar código Swift a Objective-C?
Escribí una biblioteca en Swift y no pude importarla a mi proyecto actual, escrito en Objective-C.
¿Hay alguna forma de importarlo?
#import "SCLAlertView.swift" - 'SCLAlertView.swift' file not found
Necesitas importar ProductName-Swift.h
. Tenga en cuenta que es el nombre del producto; las otras respuestas cometen el error de usar el nombre de la clase.
Este archivo único es un encabezado generado automáticamente que define las interfaces Objective-C para todas las clases Swift en su proyecto que están anotadas @objc
o heredadas de NSObject
.
Consideraciones:
Si el nombre de su producto contiene espacios, reemplácelos con guiones bajos (por ejemplo,
My Project
se convierte enMy_Project-Swift.h
)Si su objetivo es un marco, necesita importar
<ProductName/ProductName-Swift.h>
Asegúrese de que su archivo Swift sea miembro del objetivo
Esto es lo que debe hacer:
Crear un nuevo proyecto en Objective-C
Crear un nuevo
.swift
archivo- Aparecerá una ventana emergente que le preguntará "¿Le gustaría configurar un encabezado puente Objective-C?" .
- Elija Sí .
Haga clic en su archivo de proyecto Xcode
Haga clic en Configuración de compilación
Busque la barra de búsqueda y busque Define Module .
Cambie el valor a Sí .
Nombre del módulo de producto de búsqueda .
Cambie el valor al nombre de su proyecto.
En Delegado de aplicación, agregue lo siguiente:
#import "YourProjectName-Swift.h"
Nota: Siempre que desee utilizar su archivo Swift, debe importar la siguiente línea:
#import "YourProjectName-Swift.h"
Instrucciones del sitio web de Apple:
Para importar código Swift a Objective-C desde el mismo marco
En Configuración de compilación , en Empaquetado , asegúrese de que la configuración Define Module para ese objetivo de marco esté establecida en Sí . Importe el código Swift de ese marco de destino a cualquier archivo Objective-C .m dentro de ese marco de destino usando esta sintaxis y sustituyendo los nombres apropiados:
#importar "NombreProducto-Swift.h"
Revisión:
Solo puede importar "ProductName-Swift.h" en archivos .m.
Los archivos Swift en su destino serán visibles en los archivos .m de Objective-C que contienen esta declaración de importación.
Para evitar referencias cíclicas, no importe Swift a un archivo de encabezado Objective-C. En su lugar, puede declarar una clase Swift para usarla en un encabezado Objective-C. Tenga en cuenta que no puede subclasificar una clase Swift en Objective-C.