2

私のアプリには、どこかに保存したい約30個の文字列があります。後でいくつかのクラスで使用したいのですが、各クラスで 1 回だけ使用します。保管場所はどこがいい?iOSのシングルトンクラスについて読みましたが、これが解決策であるかどうかはわかりません。

forループで配列を検索できるNSArrayのようなものを作りたいです。

私はそれを次のように定義しようとしました:

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

Singleton パターンは解決策ですが、op が必要とするものには plist で十分です。

于 2012-06-25T08:02:26.460 に答える
1

配列の場合、できません! 定数は実行時に作成され、式で初期化できます。配列を返す便利なクラスメソッドを宣言し、そのメソッド内で静的 NSArray * arr を使用して、それをシングルトンとして扱うことができます。

于 2012-06-25T08:01:51.343 に答える
0

You should consider using the "MyProjectName_Prefix.pch" which lies into the "Other Sources folder". All the includes and defines putted there are included with each class of your project. The best way to go in your case would be, IMHO, that you put all your constants into a "myStringConstants.h" file and then include that file from the "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 に答える