Ich bin zwar etwas spät dran, aber da Sie die Werte im Laufe des Programms nicht ändern, könnten Sie, wenn Sie nur mit Zeichenketten arbeiten würden, folgendes tun, indem Sie Ihr Array mit einer C
Array:
extern NSString * const MY_CONSTANT_STRING_ARRAY[];
in Ihrem constants.h
Datei, und dann in Ihrer constants.m
können Sie Objekte wie folgt hinzufügen:
NSString * const MY_CONSTANT_STRING_ARRAY[] = { @"foo", @"bar" };
Um dann auf ein Mitglied zuzugreifen, könnten Sie eine for-Schleife wie folgt ausführen mit einer C
sizeof()
Betreiber:
Dies ist offensichtlich eine C
Array und nicht ein NSArray
so dass Sie nicht alle lustigen Methoden, die damit verbunden sind, wie objectAtIndex:
Sie könnten also irgendwo in Ihrem Programm eine Hilfsfunktion erstellen, die alle Zeichenketten mit der oben beschriebenen Methode durchläuft und eine NSArray
(oder NSMutableArray
gerade). Aber wenn Sie tun, was ich tue, und nur eine konstante Reihe von NSString
Werte in Ihrem Programm zu verwenden, funktioniert diese Methode am besten.
Auf diese Weise kapseln Sie alle Inhalte Ihres String-Arrays in constants.h
und ist weiterhin in Ihrem Programm verfügbar, indem Sie constants.h
in Ihrem .pch
Datei zu erstellen, anstatt ein Singleton nur für dieses Array von Werten zu erstellen oder das Array mit ein wenig Code zu setzen, was irgendwie den Zweck einer constants
Datei, weil sie die eigentlichen Konstanten aus der constants
Datei.
EDIT per Kommentar von @JesseGumpo :
Da es Probleme bei der Verwendung von sizeof()
um die Größe des Arrays zu bestimmen, können Sie die Größe des Arrays einfach in Ihrer Konstanten-Datei wie folgt deklarieren:
//.h
extern int SIZE_OF_MY_CONSTANTS_ARRAY;
///.m
int SIZE_OF_MY_CONSTANTS_ARRAY = 2;
Um dann in einer for-Schleife auf die Mitglieder zuzugreifen, können Sie wie folgt vorgehen:
for (int i=0; i < SIZE_OF_MY_CONSTANTS_ARRAY; i++)
NSLog(@"my constant string is: %@", MY_CONSTANT_STRING_ARRAY[i]);
Ja, damit wird die Größe des Arrays nicht dynamisch erfasst, aber wenn man ein Array in einer Konstanten-Datei deklariert, kennt man die Größe des Arrays bereits von Anfang an, so dass man zwar zwei weitere Codezeilen hinzufügt, aber dennoch die Aufgabe erfüllt, ein Array in einer Konstanten-Datei zu haben.
Wenn jemand weitere Vorschläge hat oder andere Möglichkeiten kennt C
Tricks bitte unten einen Kommentar hinterlassen!