如何到达对象数组的元素

时间:2012-08-15 14:18:45

标签: objective-c ios arrays object arraylist

我的应用中有一个对象数组。

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 个答案:

答案 0 :(得分: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。”

希望这有帮助,很高兴详细说明。

答案 1 :(得分:0)

someLabel2.text = [questions objectAtIndex:2];

如果这不能回答你的问题(我猜不到:),那么请在你的问题中添加更多相关信息。

答案 2 :(得分: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;

如需更多帮助,请稍微澄清一下您的问题:)

答案 3 :(得分: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;