1

これが初心者の質問である場合はお詫びしますが、解決策/正しい構文は非常に混乱します。

IOSを使用して、別の外部変数を使用してインスタンス変数名を作成する方法を見つけようとしています。

たとえば、カスタムクラス(NSCustomItemなど)を作成しましたが、ループ内のルーチンを使用して複数の個別のインスタンスを初期化すると、次のようになります。

NSCustomItem *item1
NSCustomItem *item2
NSCustomItem *item3

ループを使用して複数のオブジェクトを生成しています。ただし、ループ内では、タグや添え字、または名前付け文字列の数式を使用してオブジェクト名を作成する方法が見つからないようです。

私は次のような構文のアイデアを試してきました

 (NSCustomItem *)item[i] = [[NSCustomItem alloc] init];

しかし、それは機能していません。

誰かが情報を支援または提供できますか?感謝。

4

3 に答える 3

1

アイテムを作成し、それぞれを次のNSMutableArrayように追加します。

NSMutableArray *items = [[NSMutableArray alloc] init];

// then within your loop:
{
    [items addObject:[[NSCustomItem alloc] init]];
}

次に、それらにアクセスするために、高速列挙を使用して配列を反復処理できます。

for (NSCustomItem *item in items) {
    // do something with item
}

または、 (のサブクラスである)内のオブジェクトにアクセスする他の方法については、 NSArray クラス リファレンスを確認してください。NSMutableArrayNSArray

于 2012-11-12T05:03:23.077 に答える
0

これを直接行うことはできません。ただし、を使用して、次のNSMutableDictionaryようなものを実現できます。

NSMutableDictionary *dict = [[NSMutableDictionary alloc] init];

次に、オブジェクトを作成するたびに、それを辞書に追加します。

for (int i = 0; i < count; i++) {
  [dict setObject:[[NSCustomItem alloc] init] 
           forKey:[NSString stringWithFormat:@"item%d", i]];//dynamically creates NSCustomItem objects with names item1, item2 etc.. till item'count'
}

これを使いたいときは、

[dict valueForKey:item1];//equivalent to item1

また

[dict valueForKey:[NSString stringWithFormat:@"item%d", i]];

item1( item1.property)内のプロパティにアクセスするには、次を使用します。

[[dict valueForKey:item1] property]
于 2012-11-12T06:46:50.053 に答える
0

カスタム オブジェクト/クラスに UI/NS/MF のようなプレフィックスを付けて名前を付けないでください。つまり、プレフィックスは、クラスが属するフレームワークを識別するのに役立ちます。これは、既存のフレームワークのプレフィックスを使用して独自のオブジェクトに名前を付けるのは良い方法ではありませんが、技術的にはこれでOKです。そして、iIOS アプリでは、常に C のような構文を使用できます。u で使用される構文は、配列を宣言する正しい C の方法ではありません。C syantax に固執したい場合は、次のようなものを使用できます。

CustomClass *aTemp[2];

//May use a for loop to populate the Array Elements
aTemp[0] = [[CustomClass alloc]init];
aTemp[1] = [[CustomClass alloc]init];    ....

また

CustomClass *aTemp[]= {[[CustomClass alloc]init],[[CustomClass alloc] init]};

また

編集:

CustomClass *aTemp[3];   

    for(int i=0;i<=2;i++){ 
     CustomClass *aCustomClass = [[CustomClass alloc]init]   

     // Changes/Customizations in the aCustomClass object 

      aTemp[i]= aCustomClass;
    }

また、すべてが正常であることを確認してCustomClassください。

Objective C API で書きたい場合は、@smileyborg からの回答が適切です。

于 2012-11-12T05:07:05.903 に答える