Un peu en retard à la fête, mais puisque vous n'êtes pas à modifier les valeurs par le biais de cours du programme, si vous ne traitez avec des chaînes, vous pouvez faire ce qui suit en déclarant votre tableau à l'aide d'un C
tableau:
extern NSString * const MY_CONSTANT_STRING_ARRAY[];
dans votre constants.h
le fichier, puis dans votre constants.m
vous pouvez ajouter des objets à elle de la sorte:
NSString * const MY_CONSTANT_STRING_ARRAY[] = { @"foo", @"bar" };
Ensuite, pour accéder à un membre, vous pouvez faire une boucle for comme avec un C
sizeof()
opérateur:
De toute évidence, cela est un C
tableau et pas un NSArray
si vous n'obtenez pas toutes les méthodes amusantes attaché à elle comme objectAtIndex:
, de sorte que vous pouvez créer une fonction d'aide quelque part dans votre programme qui boucle sur toutes les chaînes à l'aide de la méthode que j'ai décrite ci-dessus et renvoie un NSArray
(ou NSMutableArray
même). Mais, si vous faites ce que je suis et juste besoin d'une constante tableau d' NSString
valeurs à utiliser tout au long de votre programme, cette méthode fonctionne le mieux.
Cette façon de faire est un condensé de tous de votre tableau de chaîne de contants en constants.h
, et est toujours disponible tout au long de votre programme par l'ajout d' constants.h
votre .pch
le fichier au lieu de créer un singleton juste pour ce tableau de valeurs ou de réglage de la matrice avec un peu de code, qui sorta de défaites le but de l' constants
le fichier, car elle élimine les réelles constantes de l' constants
le fichier..
L'ÉDITION par @JesseGumpo Commentaire:
Car il peut y avoir des problèmes avec l'utilisation de sizeof()
pour déterminer la taille du tableau, une solution simple est de déclarer la taille du tableau dans votre fichier de constantes comme suit:
//.h
extern int SIZE_OF_MY_CONSTANTS_ARRAY;
///.m
int SIZE_OF_MY_CONSTANTS_ARRAY = 2;
Et puis pour accéder aux membres d'une boucle for, vous pouvez le faire comme ceci:
for (int i=0; i < SIZE_OF_MY_CONSTANTS_ARRAY; i++)
NSLog(@"my constant string is: %@", MY_CONSTANT_STRING_ARRAY[i]);
Oui, ce n'est pas dynamiquement la capture de la taille de la matrice, mais si vous êtes à la déclaration d'un tableau dans un fichier de constantes, vous connaissez déjà la taille de ce tableau depuis le début, donc, même si elle ajoute deux lignes de code, il encore accomplit la tâche de créer un tableau dans un fichier de constantes.
Si quelqu'un a des suggestions ou connaître quelques autres C
astuces veuillez laisser un commentaire ci-dessous!