Un NSDictionary
è la classe destinata a rappresentare una struttura dati di tipo dizionario, ovvero una collezione non ordinata di coppie di tipo chiave-valore. Su Objective C, un oggetto di questa classe può essere costruito con la seguente sintassi abbreviata:
NSDictionary * products = @{
@"iMac": @1998,
@"iPod": @2001,
@"iPhone": @2007,
@"iPad":@2010,
@"AppleWatch": @2015
};
Con il codice precedente abbiamo costruito un dizionario dove la chiave è il nome di un prodotto mentre il valore è l’anno in cui il prodotto è diventato disponibile nel mercato.
Notiamo che un NSDictionary
(ma anche NSArray
o NSSet
) non può contenere direttamente dei tipi primitivi (come ad esempio int
). Tuttavia può tranquillamente contenere un NSNumber
(che è un oggetto). Quindi usiamo la sintassi @1998
per trasformare l’intero 1998 in un NSNumber
. A quel punto possiamo inserirlo nel dizionario senza problemi.
Anche in questo caso possiamo usare i generics:
NSDictionary<NSString*, NSNumber*> * products = @{
@"iMac": @1998,
@"iPod": @2001,
@"iPhone": @2007,
@"iPad":@2010,
@"AppleWatch": @2015
};
Possiamo iterare tutte le chiavi di un NSDictionary
con il costrutto for in
usando il seguente codice:
for (NSString * key in products.allKeys) {
NSLog(@"%@", key);
}
Siccome l’NSDictionary
non è una struttura ordinata, potremmo ottenere un output di questo tipo:
AppleWatch
iPhone
iPod
iPad
iMac
Analogamente, possiamo iterare i valori di un NSDictionary
:
for (NSNumber * value in products.allValues) {
NSLog(@"%@", value);
}