Il concetto di dizionario per un neofita della programmazione potrà essere leggermente ostico ma cercherò di essere il più chiaro possibile
Un primo esempio che posso fare è il seguente : se un array associa un oggetto ad un numero ,il dizionario associa un oggetto ad una stringa.
Inoltre la classe NSDictionary è una classe statica cioè , una volta assegnati dei valori questi possono solo essere letti, non è più possibile aggiungerne altri
un primo esempio pratico può essere il seguente :
[code lang=”obj-c”]
//creo un array che conterrà le chiavi
NSArray *chiave=[[NSArray alloc]initWithObjects:@"chiave1",@"chiave2",
@"chiave3", nil];
//creo un array che conterrà gli oggetti
NSArray *oggetti=[[NSArray alloc]initWithObjects:@"oggetto1",@"oggetto2",@"oggetto3", nil];
//il dizionario assocerà le chiavi agli oggetti
NSDictionary *dizionario=[NSDictionary dictionaryWithObjects:oggetti forKeys :chiave];
//inserisco la chiave e mi restituisce l’oggetto corrispondente
NSLog(@"il valore della chiave 2 è :%@",[dizionario objectForKey:@"chiave2"]);
//mi dice tutte le associazioni chiavi->oggetti
NSLog(@"Il dizionario è :%@",dizionario);
return 0;
[/code]
NSMutableDictionary
Quest’altra versione è molto più flessibile della precedente e di conseguenza più utilizzata, infatti nel caso in cui un dictionary deve essere modificato durante l’esecuzione di un’applicazione si utilizza un oggetto di tipo NSMutableDictionary.
Ecco un esempio pratico
[code lang=”obj-c”]
#import <Foundation/Foundation.h>
int main(int argc, const char * argv[])
{
//inizializzo il dizionario con la capacità max di 3
NSMutableDictionary *dizionario=[[NSMutableDictionary alloc]initWithCapacity:3];
[dizionario setObject:@"oggetto1" forKey:@"chiave1"];
[dizionario setObject:@"oggetto2" forKey:@"chiave2"];
[dizionario setObject:@"oggetto3" forKey:@"chiave3"];
NSLog(@"il valore della chiave 2 è :%@",[dizionario objectForKey:@"chiave2"]);
//inserisco la chiave e mi restituisce l’oggetto corrispondente
NSLog(@"il valore della chiave 2 è :%@",[dizionario objectForKey:@"chiave2"]);
//mi dice tutte le associazioni chiavi->oggetti
NSLog(@"Il dizionario è :%@",dizionario);
//rimuove un oggetto in base la chiave inserita
[dizionario removeObjectForKey:@"chiave1"];
//rimuove tutti gli oggetti dal dizionario
[dizionario removeAllObjects];
//non ci sono più oggetti
NSLog(@"Il dizionario è :%@",dizionario);
}
[/code]