2012-06-25 103 views
2

在我的应用程序中,我有大约30个字符串,我想存储在某个地方。我想在以后的几堂课中使用它,每堂课只用一次。最适合存放它的地方在哪里?我读过关于ios的单身人士课程,但我不确定这是否对我来说是解决方案。在哪里存储常量字符串

我想做一些像NSArray在循环我可以搜索数组。

我试着将它定义成:

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

,但我可以在.h文件中做到这一点,我不知道是否为常数变量我想有一个类。

回答

2

好吧,如果你不介意的话,你可以用NSArray和所有NSStrings它的内部,然后将它们安装在plist文件:

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

的Singleton模式是一个解决方案,但对于自己想要的东西,一个plist是绰绰有余的。

+0

当我这样做,并希望从plist访问myArray我得到了plistPath无(0x00000000)。我试图从*应用didFinishLaunching * ..和myArray在[AppName] -Info.plist中有5个项目。为什么? – Kuba

+0

哦,我发现有什么不对。这是一个单独的plist文件。 – Kuba

+0

有一段时间我虽然没有在应用程序捆绑中添加plist文件。 – Peres

0

你应该考虑使用“MyProjectName_Prefix.pch”说谎成“其他源文件夹”。所有的包含和定义putted都包含在您项目的每个类中。 在你的情况下,最好的办法是,恕我直言,你把所有的常量放入一个“myStringConstants.h”文件,然后从“MyProjectName_Prefix.pch”中包含该文件。

+0

但是,如何声明那里NSArray包含NSString? – Kuba

+0

我看到你编辑你的答案,但是如何在h文件中用NSStrings声明NSArray。这是我的主要问题。 – Kuba

+0

我误解了你的问题。如果您需要在整个应用程序中共享对象,那么正如您所提到的那样,Singleton模式将成为您的解决方案。 – FredericK

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; 
1

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