在我的应用程序中,我有大约30个字符串,我想存储在某处。我想稍后在几个类中使用它,它将在每个类中只使用一次。哪个地方最好存放?我在ios中读过单身类,但我不确定这是否适合我。
我想制作像NSArray这样的东西,在 for 循环中我可以搜索数组。
我试图将它定义为:
NSArray *arr = [NSArray arrayWithObjects:@"something",@"else", nil];
但是我可以在.h文件中执行此操作,而且我不确定是否需要常量变量我想要一个类。
答案 0 :(得分:2)
好吧,如果您不介意,可以在其中包含NSArray
及其所有NSStrings
的plist文件,然后加载它们:
NSString *plistPath = [[NSBundle mainBundle] pathForResource:@"myArray" ofType:@"plist"];
NSArray *myArrayOfStrings = [NSArray arrayWithContentsOfFile:plistPath];
Singleton模式是一个解决方案,但是对于op想要的东西,plist绰绰有余。
答案 1 :(得分:1)
对于阵列,你不能! 常量是在运行时创建的,您可以使用表达式初始化它们。 您可以声明一个方便类方法,该方法返回数组,并在该方法中使用静态NSArray * arr,将其视为单例。
答案 2 :(得分:0)
你应该考虑使用" MyProjectName_Prefix.pch"它位于"其他来源文件夹"中。所有包含和定义的推文都包含在项目的每个类中。 在你的情况下,最好的方法是,恕我直言,你把所有的常量放入" myStringConstants.h"文件,然后从" MyProjectName_Prefix.pch"中包含该文件。
答案 3 :(得分:0)
您可以使用纯C样式:
NSString* const arr[] = {@"something",@"else"};
const int arrSize = sizeof(arr)/sizeof(arr[0]);
void printArr()
{
for(int i=0; i<arrSize; i++) {
NSLog(@"%@", arr[i]);
}
}
要在.h文件中声明原型,请使用extern
:
extern NSString* const arr[];
extern const int arrSize;