2012-02-10 11 views
8

Capisco di usare costanti per i vostri nomi in un NSDictionary per evitare errori di battitura (myName si completerà automaticamente vs @ "myName" non lo farà).Usi le costanti quando lavori con NSDictionary?

sto lavorando con dizionari di medie dimensioni in questo momento e un paio di volte, ho sbagliato i nomi delle chiavi e ho dovuto passare un po 'di tempo a rintracciare dove mi manca scritto una parola.

Mi chiedo, pensi che valga la pena di impostare uno schema di denominazione delle costanti?

+2

Sì, se loro un sacco di utilizzare. Facilita anche il refactoring (err, rinomina le chiavi). – Costique

risposta

21

Sì, ma vorrei consigliare definire appropriate costanti stringa piuttosto che #defines per le stringhe perché le costanti di stringa sono sicure per tipo e ogni riferimento utilizzerà lo stesso oggetto stringa effettivo, il che migliora le prestazioni dell'uso di isEqualToString: per confrontarle.

per definire una stringa privata costante si può mettere questo nel file .m:

static NSString *const MyConstant = @"MyConstant"; 

di renderlo pubblico, è possibile mettere questo nel file .h invece, o è possibile dividere la definizione mettendo questo nel tuo .h:

extern NSString *const MyConstant; 

E questo nel file .m:

NSString *const MyConstant = @"MyConstant"; 
+3

+1 ottima risposta e totalmente la strada da percorrere - spero che questo venga letto da alcuni dei miei colleghi che usano costantemente definisce per quelle cose; tuoni e fulmini li colpiranno sul cesso! – Till

3

Sì, ne vale la pena. La coerenza in qualcosa di simile fa quello che dici: riduce gli errori e ti fa risparmiare tempo.

4

Generalmente creo un file GlobalDefinitions.h e posiziono macro che posso utilizzare nel codice anziché nelle stringhe magiche.

file h

#define PERSON_NAME @"Person_name" 
#define PERSON_BDAY @"Person_bday" 

Includendo file h è ora possibile accedere te valori in questo modo

[dictionary objectForKey:PERSON_NAME]; 
+1

Si noti che le stringhe costanti sono meglio delle stringhe # def'd. Vedi http://stackoverflow.com/questions/538996/constants-in-objective-c –

+0

concordato - vedi la mia risposta qui sotto per come definire le costanti di stringa. –

+0

Sono d'accordo con la risposta di Nick. –

Problemi correlati