0

I have a chess puzzle game.

I want to set up the wrong squares in an enum.

enum 1000H1wrong {11, 13, 15 21, 22};

Can I check to see if a number is in the ENTIRE enum 1000H1wrong.

if chesssquare == enum 1000H1wrong {        }

same as this this:

if ((chesssquare == 11) || (chesssquare == 13) || (chesssquare == 15)    || (chesssquare == 21) || (chesssquare == 22)) {      }
4

2 に答える 2

4

代わりに NSArray を使用してください。数値が含まれているかどうかを確認するには、次のようにします。

NSArray *1000H1wrong = [NSArray arrayWithObjects: @11, @13, @15 @21, @22, nil];
[1000H1wrong containsObject: @(chesssquare) ];
于 2012-12-24T16:06:03.087 に答える
0

一連の列挙値のメンバーシップを自動的に確認する方法はありません。giorasch が推奨するように、それらを NSSet に配置できます。しかし、私の好みは、ストレートな C 配列を使用することです。

static int squares1001H1wrong[] = {11, 13, 15, 21, 22};

#define ARRAY_SIZE(array) (sizeof(array) / sizeof(array[0]))

static BOOL isInSquares1001H1wrong(int square)
{
    for (int i = 0; i < ARRAY_SIZE(squares1001H1wrong); ++i)
        if (squares1001H1wrong[i] == square)
            return YES;
    return NO;
}

配列は、実行時ではなくコンパイル時に構築されます。オブジェクトは構築されません。テストは、単一のメソッド呼び出しなしで行われます。

Objective-C は C 言語のスーパーセットです。C を学習して、Objective-C の全機能にアクセスします。NSDictionary 要素の NSArray を回避する例については、Objective-C Is Still C (Not Java!)を参照してください。

于 2012-12-24T20:57:50.060 に答える