2

構成情報を設定するために使用する定義済みの列挙型があります。列挙オブジェクトタイプを呼び出しましょう

さまざまなタイプを定義し、列挙型はこれらのタイプの人間が判読できる名前を定義します。

私のパートナーは、オブジェクトの配列をループしてこれらの型の値を設定するセットアップ コードを作成しました。彼は整数値を使用しました。

彼が行ったことの大まかな概要は次のとおりです。

for (int index = 0; index < [configArray count]; index++)
{
  ConfigObject aConfigObject = [configArray objectAtIndex: index];
  if (index ==0;
    aConfigObject.type = 7;
  else if (index == 1)
    aConfigObject.type = 5;
  else if (index == 2)
    aConfigObject.type = 3;
}

(これは、私が話していることを説明するための疑似コードです。)

私はいくつかの理由でそれが好きではありませんでした。まず、読みにくい。タイプ7って何?次に、後で新しい列挙型を追加するか、列挙型の順序を変更すると、壊れます。(ユーザーに表示されるタイプのリストは番号順に表示されます。)

コードを次のように変更しました。

    aConfigObject.type = blueType;

より良いが、まだ厳格なコード。

この構成情報を plist ファイルに移動し、起動時に読み取りたいと考えています。ただし、これにより元の問題に戻ります。これらの値を plist に入れると、カスタムの列挙型を使用する方法がわかりません。plist に数値を入力する必要があるため、コード plist を読み取って維持する必要があります。

Apple は、plist のいたるところでカスタム列挙型を使用しています。

新しいカスタム列挙型を定義し、Xcode の最近のバージョン (現在 Xcode 4.5 を使用) の組み込みの plist エディターにこれらの列挙型を理解するように教えることは可能ですか? それは大きな改善になるでしょう。かなりの量の検索を行いましたが、これまでのところ答えが見つかりませんでした。

4

1 に答える 1

0

次のような構造の pList ファイルに構成を追加できます。

ここに画像の説明を入力

次のようなものを使用して、起動時にその辞書を読み取ります。

NSString *path = [[NSBundle mainBundle] pathForResource:@"myPlistFileName" ofType:@"plist"];
NSDictionary *myPlist = [NSDictionary dictionaryWithContentsOfFile:path];
NSDictionary *configs = [myPlist objectForKey:@"types"];

これで構成ができましconfigsた。次のようにタイプを設定できます。

aConfigObject.type = [config objectForKey:kBlueType]; // Assuming you have set up your constants for it.

今、この懸念について:

次に、後で新しい列挙型を追加するか、列挙型の順序を変更すると、壊れます。

配列内のオブジェクトの位置を使用してそのタイプを決定しているように思えます。したがって、ループの剛性を下げるには、次のようにすることができます。

for (NSUInteger index = 0; index < [config count]; index++) {
    ConfigObject *aConfigObject = [configArray objectAtIndex: index];
    aConfigObject.type = [config objectForKey:[NSString stringWithFormat:@"%d", index]];
}
于 2012-10-04T19:05:44.507 に答える