聚会有点晚了,但是由于您没有在整个程序过程中更改值,因此如果您只处理字符串,则可以通过使用 C 数组声明您的数组来执行以下操作:
extern NSString * const MY_CONSTANT_STRING_ARRAY[];
在您的 constants.h 文件中,然后在您的 constants.m 中,您可以像这样向其中添加对象:
NSString * const MY_CONSTANT_STRING_ARRAY[] = { @"foo", @"bar" };
然后要访问成员,您可以使用C sizeof() 运算符执行 for 循环:
这显然是一个C 数组而不是NSArray,因此您不会像objectAtIndex: 那样获得所有附加到它的有趣方法,因此您可以在程序中的某处创建一个循环的辅助函数所有字符串都使用我上面概述的方法并返回NSArray(甚至NSMutableArray)。但是,如果您正在做我正在做的事情,并且只需要在整个程序中使用一个常量数组 NSString 值,那么这种方法效果最好。
这样做会将您的所有字符串数组内容封装在constants.h 中,并且仍然可以通过在您的.pch 文件中添加constants.h 来在整个程序中使用,而不是仅为这个值数组或设置创建一个单例带有一点代码的数组,这有点违背了constants 文件的目的,因为它从constants 文件中删除了实际的常量..
根据@JesseGumpo 的评论进行编辑:
由于使用sizeof() 确定数组的大小可能存在问题,一个简单的解决方法是在常量文件中声明数组的大小,如下所示:
//.h
extern int SIZE_OF_MY_CONSTANTS_ARRAY;
///.m
int SIZE_OF_MY_CONSTANTS_ARRAY = 2;
然后要访问 for 循环中的成员,您可以这样做:
for (int i=0; i < SIZE_OF_MY_CONSTANTS_ARRAY; i++)
NSLog(@"my constant string is: %@", MY_CONSTANT_STRING_ARRAY[i]);
是的,这不会动态捕获数组的大小,但是如果您在常量文件中声明一个数组,您从一开始就已经知道该数组的大小,所以即使它添加了两行代码,它仍然完成了在常量文件中包含数组的任务。
如果有人有更多建议或可能知道其他C 技巧,请在下方留言!