2012-01-24 15 views

risposta

15

si può inserire qualsiasi tipo di oggetto in un NSDictionary. Quindi, mentre @"fred" è OK, 1 non è, come un intero non è un oggetto. Se si desidera inserire un numero in un dizionario, avvolgerlo in un NSNumber:

NSDictionary *header = { @"title": @"fred", @"count": @1 }; 
+2

Interessante. Sono abituato al C# in cui tutto è un oggetto. Grazie. – ChrisP

0

Non come l'avete. Il numero 1 è una primitiva e l'oggetto NSArray può contenere solo oggetti. Crea un NSNumber per "1" e poi lo memorizzerà.

0

Un NSDictionary può contenere solo oggetti Objective-C in esso (come NSString e NSArray), non può contenere tipi primitivi come int, float o char*. Dati quei limiti, i dizionari eterogenei sono perfettamente legali.

Se si desidera includere un numero come 1 come una chiave o un valore, si dovrebbe avvolgere con una NSNumber:

NSDictionary *header=[[NSDictionary alloc] initWithObjectsAndKeys: 
    @"fred", @"title", 
    [NSNumber numberWithInt:1], @"count", 
    nil]; 
0

L'unico requisito è che è essere un oggetto. Sta a te gestire gli oggetti correttamente nel tuo codice, ma presumibilmente, puoi tenere traccia dei loro tipi in base ai tasti.

1 non è un oggetto. Se vuoi inserire un numero in un dizionario, puoi convertirlo in un NSNumber.

Problemi correlati