2

在我的应用程序中,我想存储大约 30 个字符串。以后想在几节课上用,每节课只用一次。存放它的最佳位置在哪里?我在 ios 中阅读了有关单例类的信息,但我不确定这是否适合我。

我想做类似 NSArray 的东西,在for循环中我可以搜索数组。

我试图将其定义为:

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

但是我可以在 .h 文件中做到这一点,而且我不确定是否对于常量变量我想要一个类。

4

4 回答 4

2

好吧,如果您不介意,您可以拥有一个 plist 文件,其中包含一个NSArray和所有NSStrings内容,然后加载它们:

NSString *plistPath = [[NSBundle mainBundle] pathForResource:@"myArray" ofType:@"plist"];
NSArray *myArrayOfStrings = [NSArray arrayWithContentsOfFile:plistPath];

单例模式是一种解决方案,但是对于操作人员想要的,plist 就绰绰有余了。

于 2012-06-25T08:02:26.460 回答
1

对于一个数组,你不能!常量是在运行时创建的,您可以使用表达式对其进行初始化。您可以声明一个返回数组的便利类方法,并在该方法中使用静态 NSArray * arr,将其视为单例。

于 2012-06-25T08:01:51.343 回答
0

您应该考虑使用位于“Other Sources 文件夹”中的“MyProjectName_Prefix.pch”。所有包含和定义都包含在项目的每个类中。在您的情况下,最好的方法是,恕我直言,您将所有常量放入“myStringConstants.h”文件中,然后从“MyProjectName_Prefix.pch”中包含该文件。

于 2012-06-25T07:43:28.910 回答
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;
于 2012-06-25T07:49:53.020 回答