Pregunta

tengo una categoría en UIImage que está escrito en Objective-C.Los siguientes son algunos métodos de ejemplo.¿Cómo llamo a estos métodos en Swift?

+(UIImage *) imageOrPDFNamed:(NSString *)resourceName; 
+(UIImage *) imageWithPDFNamed:(NSString *)resourceName;

He probado lo siguiente y no reconoce los métodos:

let image = UIImage(imageOrPDFNamed:"test.pdf")
let image = UIImage(PDFNamed:"test.pdf")
¿Fue útil?

Solución

Hay varios casos para la función de categorías y sus convenciones de llamada.

1 en swift Las funciones de clase en categorías se pueden importar como convenience initializes si devolvieron el mismo tipo al que llamaron como

 +(UIImage *) imageOrPDFNamed:(NSString *)resourceName ;

por lo que se puede llamar como

    UIImage(orPDFNamed: "abc")

2) Sin embargo, si las funciones de clase en categorías no devuelven el mismo tipo de objeto (UIImage) a la que recurre en este caso UIImage como

   +(int) imageOrPDFNamedInt:(NSString *)resourceName ;

se llamará como

    UIImage.imageOrPDFNamedInt("abc")

3) Si la función de categorías no es una función de clase, llamará directamente en la instancia de UIImage como

   -(UIImage *) imagePDFNamed:(NSString *)resourceName ;

llamado

    UIImage().imagePDFNamed("abc")

Otros consejos

Esto es finalmente lo que funcionó:

let image = UIImage(orPDFNamed:"test.pdf")

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top