Come posso risolvere il problema 'incompatibili tipi Obj-C'?
-
30-09-2019 - |
Domanda
In particolare l'avvertimento è: " 'struct NSString *' incompatibili tipi Objective-C, previsto 'struct UIImage *' quando si passa l'argomento 4 'objectWithType: Nome: Codice: immagine' dal distinta tipo Objective-C". Si segue una linea che assomiglia così:
[Object objectWithType:@"Type" name:@"Name" code:@"0001" image:@"image.png"],
Quindi, ho capito che ho creato il Object
classe per prendere tipo UIImage, ma sto dotandola di tipo NSString. Ecco il problema:. Non so come indicare l'immagine in modo diverso rispetto al suo nome di file
(Mi scuso se questo è un problema di fondo. Sono nuovo di questo e cercando di cercare soluzioni prima di pubblicare qui. Tutto l'aiuto che si può offrire è apprezzato.)
Soluzione
In realtà bisogno di un'istanza di UIImage
, che si capisce. Così, il metodo della classe imageNamed:
viene in genere utilizzato per questo:
[Object objectWithType:@"Type" name:@"Name" code:@"0001" image:[UIImage imageNamed:@"image.png"]];
Un'altra opzione (dal momento che siete usando tutte le stringhe qui) potrebbe essere quella di riscrivere il metodo in modo che ci vuole un nome invece di un'immagine e quindi creare l'immagine all'interno della implementazione del metodo. Così si potrebbe definire il metodo:
- (void)objectWithType:(NSString*)type name:(NSString*)name code:(NSString*)code imageName:(NSString*)imageName
{
UIImage* theImage = [UIImage imageNamed:imageName];
// do whatever
}
Altri suggerimenti
Usa [UIImage imageNamed:]. Sarà solo il lavoro per le immagini che fanno parte del progetto.
[Object objectWithType:@"Type" name:@"Name" code:@"0001" image:[UIImage imageNamed:@"image.png"]]
Se 'immagine.png' è incluso nel vostro pacco progetto, allora si può fare questo per passare un UIImage invece di un NSString:
[Object objectWithType:@"Type" name:@"Name" code:@"0001" image:[UIImage imageNamed:@"image.png"]];