Rápido:Cómo llamar a un método de categoría o clase desde Objective-C
-
02-01-2020 - |
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")
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")