A questo punto è necessario salvare i dati che l'utente andrà ad inserire all'interno di un nuovo oggetto che andremo a creare. Seguiamo la stessa procedura vista nelle lezioni precedenti per l'aggiunta di una nuova classe al progetto e questa volta scegliamo, come classe da cui ereditare NSObject
. Infine salviamo la nuova classe con il nome Fruit
.
Come prima cosa andiamo nel file Fruit.h
e dichiariamo gli attributi di classe che rappresenteranno le informazioni inserite dall'utente nel modulo di creazione:
NSString * _name;
NSString * _origin;
NSString * _description;
UIImage * _image;
Una classe che eredita da NSObject
possiede il metodo init
come costruttore, ma dato che a noi serve un init a cui passare dei parametri ne dichiariamo uno noi nel seguente modo:
- (id)initWithName:(NSString*)name origin:(NSString*)origin description:(NSString*)description image:(UIImage*)image;
Adesso spostiamoci nel file Fruit.m ed inseriamo il seguente codice di implementazione del metodo di init creato:
- (id)initWithName:(NSString *)name origin:(NSString *)origin description:(NSString *)description image:(UIImage *)image{
self = [super init];
if (self){
_name = [[NSString alloc]initWithString:name];
_origin = [[NSString alloc]initWithString:origin];
_description = [[NSString alloc]initWithString:description];
_image = [[UIImage alloc]initWithCGImage:image.CGImage];
}
return self;
}
Adesso la nostra classe Fruit
è terminata. L'ultima operazione che dobbiamo compiere è la creazione di un oggetto Fruit
tutte le volte che l'utente, dopo aver inserito i campi, preme il bottone Inserisci. Spostiamoci dunque nella classe InsertViewController.m
e all'interno del metodo addButtonTapped
inseriamo il seguente codice:
int index;
for (int i = 0; i < 3; i++) {
UIButton * button = [_buttonArray objectAtIndex:i];
if (button.selected == YES) {
index = i;
button.layer.borderWidth = 0.0;
[button setSelected:NO];
}
}
UIImage * fruitImage = [_imageButtonArray objectAtIndex:index];
Fruit * fruitObject= [[Fruit alloc]initWithName:_nameTextField.text origin:_originTextField.text description:_descriptionTextView.text image:fruitImage];
_nameTextField.text = @"";
_originTextField.text = @"";
_descriptionTextView.text = @"";
All'interno del ciclo for
cerchiamo l'indice del bottone, contenente l'immagine del frutto, che avevamo selezionato e ricaviamo l'immagine associata. A questo punto creiamo l'oggetto Fruit
utilizzando il metodo di init precedentemente creato e resettiamo i campi di testo.
Con queste linee di codice abbiamo creato un oggetto Fruit
e nelle prossime lezioni vedremo come passare tale oggetto alla classe ListViewController
.