Basi di programmazione Obj-c La classe NSDictionary e NSMutableDictionary

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]