2012-06-25 138 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,將其視爲單例。