0

アプリにオブジェクト配列があります。

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

[questions addObject:[self addQuestion:@"QUESTION 1" option1:@"ans1" option2:@"ans2" option3:@"ans3" option4:@"ans4" option5:@"ans5" answer:2]];

[questions addObject:[self addQuestion:@"QUESTION 2" option1:@"ans1" option2:@"ans2" option3:@"ans3" option4:@"ans4" option5:@"ans5" answer:2]];

そして私のwiewには6つの異なるラベルがあります。1つは質問用で、もう1つはオプション用です。しかし、たとえば最初のオブジェクトの「オプション2」に到達して、そのコンテンツをラベルに配置する方法がわかりませんでしたか?

4

4 に答える 4

1

NSDictionary(またはNSMutableDictionary)を使用してください!または、カスタムクラスを作成してください!この問題を効率的かつ安全に達成するための多くの優れた方法があります。オプションを比較検討する必要があります。メソッドの戻り値が実際に1つのオブジェクト(NSMutableDictionaryなど)でない限り、現在持っているものは確実に機能しません。

辞書を使用することを選択した場合、あなたはこのようにそれについて行くかもしれません

NSMutableDictionary *question = [[NSMutableDictionary alloc] initWithCapacity:7];
[question setObject:@"Ask a question" forKey:@"question"];
[question setObject:@"Option 1" forKey:@"1"];
[question setObject:@"Option 2" forKey:@"2"];
[question setObject:@"Option 3" forKey:@"3"];
[question setObject:@"Option 4" forKey:@"4"];
[question setObject:@"Option 5" forKey:@"5"];
[question setObject:@"2" forKey:@"Answer"];

//Keep in mind, the numbers in these dictionary entries are treated as strings

次に、この辞書をアレイに追加できます。

[questions addObject:question];

特定の質問辞書オブジェクトの正解にアクセスするには、次のように呼び出します。

NSString *answer = [question objectForKey:[question objectForKey:@"Answer"]];

..これは文字列を返します:「オプション2」。

ラベルを付けるオプションのテキストにアクセスするには:

NSString *option = [question objectForKey:@"2"];

..これも文字列を返します:「オプション2」。

これがお役に立てば幸いです。

于 2012-08-15T15:24:06.237 に答える
0
someLabel2.text = [questions objectAtIndex:2];

これがあなたの質問に答えない場合(私はどういうわけか推測します:)、あなたの質問にもっと関連性のある情報を追加してください。

于 2012-08-15T14:42:27.887 に答える
0
// get the first object in the array

id question = [questions objectAtIndex: 0];

// TODO: use whatever accessor you have to get properties
// NSString *message = ...

// set label text
label.text = message;

さらにヘルプが必要な場合は、質問を少し明確にしてください:)

于 2012-08-15T14:42:42.557 に答える
0

それはすべて、メソッドがどのように機能するかに魂のこもった依存ですaddQuestion:option1:option2:option3:option4:option5:。そのメソッドによって返されるオブジェクト内のすべてのオプションにアクセスするための、ある種のアクセサーメソッドがあると思います。より多くのコードを投稿できれば助かります。また、questions配列をインスタンス変数にして、そのクラスの他のメソッドから、またはアクセサメソッドの設定方法によってはクラスの外部からアクセスできるようにすることをお勧めします。

私はあなたのコードがこのように機能することを想像します(繰り返しますが、あなたが完全なソースを投稿していないのでわかりません)。

// this would be an instance of your class
id someObject = [questions objectAtIndex:0];

NSString *option1 = someObject.option1;
NSString *option2 = someObject.option2;
NSString *option3 = someObject.option3;
NSString *option4 = someObject.option4;
NSString *option5 = someObject.option5;
于 2012-08-15T14:53:59.483 に答える