objective-c - 如何访问对象数组的元素

标签 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”,以便我可以将其内容放入标签?

最佳答案

使用 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"]];

..将返回一个字符串:“Option 2.”

要访问要放入标签中的选项文本:

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

..这也会返回一个字符串:“Option 2.”

希望这有帮助,很乐意详细说明。

关于objective-c - 如何访问对象数组的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11971007/

相关文章:

objective-c - iOS 上的 Coreplot - 如何删除默认填充,以便图表在没有轴标签的情况下完全填充 View

ios - 如何正确释放CVMetalTextureCacheRef和CVMetalTextureRef类型

c - 在 C 中,是否保证 1/2 == 0?

ios - 同一 ipad 上具有不同 ID 的多个 MDM 配置文件

c++ - 通过未知大小的外部普通数组进行循环

javascript - 对多个数组中的对象进行分组?

objective-c - Mac 到蓝牙设备的文件传输,简单的例子?

ios - 旧路径在 Xcode 框架构建中仍然存在

ios - NSMutableDictionary 比较提取不等于对

ios - 在不使用 MFMailComposeViewController 的情况下从我的应用程序发送电子邮件