¿Cómo puedo corregir esta advertencia 'incompatibles tipos Obj-C'?
-
30-09-2019 - |
Pregunta
En concreto, la advertencia es: " 'struct NSString *' incompatibles tipos de Objective-C, que se espera 'UIImage struct *' cuando se pasa el argumento de 4 'objectWithType: Nombre: Código: Imagen' de distinto tipo de Objective-C". De ello se sigue una línea que se ve así:
[Object objectWithType:@"Type" name:@"Name" code:@"0001" image:@"image.png"],
Por lo tanto, entiendo que creé el Object
clase para tomar UIImage tipo, pero estoy dotándolo de tipo NSString. Aquí está el problema:. No sé cómo indicar la imagen de manera diferente a su nombre de archivo
(Disculpas si esto es un problema básico. Soy nuevo en esto y tratar de buscar soluciones antes de publicar aquí. Cualquier ayuda que puede ofrecer es apreciado.)
Solución
En realidad se necesita una instancia de UIImage
, que usted entiende. Por lo tanto, el método de la clase imageNamed:
se suele utilizar para esto:
[Object objectWithType:@"Type" name:@"Name" code:@"0001" image:[UIImage imageNamed:@"image.png"]];
Otra opción (dado que está utilizando todas las cadenas aquí) podría ser la de reescribir el método de modo que se necesita un nombre en lugar de una imagen y luego crear la imagen dentro de la implementación del método. Así que se podría definir el método:
- (void)objectWithType:(NSString*)type name:(NSString*)name code:(NSString*)code imageName:(NSString*)imageName
{
UIImage* theImage = [UIImage imageNamed:imageName];
// do whatever
}
Otros consejos
Utilice [UIImage imageNamed:]. Sólo funcionará para las imágenes que forman parte de su proyecto.
[Object objectWithType:@"Type" name:@"Name" code:@"0001" image:[UIImage imageNamed:@"image.png"]]
Si 'image.png' está incluido en su paquete de proyectos, entonces usted puede hacer esto para pasar un UIImage en lugar de un NSString:
[Object objectWithType:@"Type" name:@"Name" code:@"0001" image:[UIImage imageNamed:@"image.png"]];