Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

830
Vistas
Sintaxis para llamar al método Swift desde la clase Objective-C

Estoy tratando de llamar a un código en un archivo de Utilidades escrito en Swift desde un archivo Objective-C.

En este momento, la clase en el archivo Swift se ve así:

 class ImageClass: NSObject { public func imageFromString(name: String?) -> UIImage? { //code to make image return image } }

Estoy tratando de llamarlo desde el archivo Objective-C con:

 UIImage *myImage = [ImageClass imageFromString:@"test"];

sin embargo, esto está dando error:

 Use of undeclared identifier 'ImageClass'

Sé que se puede acceder al archivo de Utilidades desde el archivo de Objective-C porque llamo a otros métodos allí aunque use una Instancia compartida.

¿Alguien puede sugerir la forma correcta de llamar al código? En realidad, no me importa si es una clase o una instancia compartida, solo necesito poder llamarlo.

Editar:

Como sugirió @Charles Srstka, hice CMD-clic en el archivo #import myapp.swift , salté a Definición y muestra lo siguiente en el encabezado:

 - (UIImage * _Nullable)imageFromStringWithName:(NSString * _Nullable)name SWIFT_WARN_UNUSED_RESULT;

En consecuencia, intenté agregar WithName (que había olvidado) a la invocación, así que tengo:

 UIImage *myImage = [ImageClass imageFromStringWithName:@"test"];

pero sigo recibiendo un error con o sin @objc antes del método:

 No known class method for selector 'imageFromStringWithName:'
over 4 years ago · Santiago Trujillo
2 Respuestas
Responde la pregunta

0

En Swift 4.2 y más reciente

  1. Agregue esta línea a su archivo "*.m":

     #import "YourProjectName-Swift.h"
  2. Agregue @objc antes de su función:

     @objc public func imageFromString(name: String?) -> UIImage? { //code to make the image return image }
  3. Llámalo dentro de la clase Objective-C:

     ImageClass *imgObject = [[ImageClass alloc] init]; UIImage *myImage = [imgObject imageFromStringWithName:@"test"];
over 4 years ago · Santiago Trujillo Denunciar

0

Agregue esta línea a su archivo Objective-C:

 #import "YourProjectName-Swift.h"

Reemplace YourProjectName con el nombre de su proyecto. Esto hará que todas las clases de Swift compatibles con Objective-C en su proyecto sean visibles para su código de Objective-C.

Tenga en cuenta que también deberá agregar la anotación @objc a sus func de funciones para que los métodos sean visibles para Objective-C.

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda