我的应用中有一个对象数组。
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”,以便我可以将其内容添加到标签中?
答案 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;