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

在我看来,我有 6 个不同的标签。一个用于问题,另一个用于选项。但是,我不知道如何到达例如第一个对象的“选项 2”,以便我可以将其内容放到标签上?

4

4 回答 4

1

使用 NSDictionary(或 NSMutableDictionary)!或者创建一个自定义类!有很多很好的方法可以有效和安全地解决这个问题,您需要权衡您的选择。除非您的方法的返回值确实是一个对象(例如 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:方法的工作原理。我想你有某种访问器方法来访问该方法返回的对象中的所有这些选项。如果您可以发布更多代码,这将有所帮助。此外,最好将问题数组作为实例变量,以便您可以从该类的其他方法访问它,也可能从类外部访问它,具体取决于您如何设置访问器方法。

我想你的代码会像这样工作(同样,我不知道,因为你还没有发布你的完整源代码)。

// 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 回答