存储常量字符串的位置

时间:2012-06-25 07:36:06

标签: objective-c ios

在我的应用程序中,我有大约30个字符串,我想存储在某处。我想稍后在几个类中使用它,它将在每个类中只使用一次。哪个地方最好存放?我在ios中读过单身类,但我不确定这是否适合我。

我想制作像NSArray这样的东西,在 for 循环中我可以搜索数组。

我试图将它定义为:

NSArray *arr = [NSArray arrayWithObjects:@"something",@"else", nil];

但是我可以在.h文件中执行此操作,而且我不确定是否需要常量变量我想要一个类。

4 个答案:

答案 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;