2011-03-03 40 views
0

我被要求开发一个多选题测试iPhone应用程序。该测试有六个类别,每个类别可能有25到30个问题。用户选择一个类别,然后提出哪个问题,一次一个。每个问题包括4个可能的答案;如果用户选择了错误的提示,则会提供简要说明。 我正在处理一个单词doc(我想它可能是一个文本文档,甚至是PDF),看起来像我们都采取的标准类型的多项选择测试。有关如何阅读,解析和显示问题和答案的任何建议?通过阅读各种指南,操作指南,示例代码等,这一点并不明显(至少对我来说)并不明显。我敢肯定,对于你们所有人来说,我都很清楚这点。任何建议将不胜感激。iOS文件解析

回答

2

我在这里做了一些假设:

  • 不期望的问题是要定期更换。
  • 您是唯一需要编辑问题的人。
  • 设计/布局不会因问题而改变。

鉴于这些假设,使用plist可能是存储问题的最佳方法。

向您的项目添加一个新文件,在Mac OS X > Resource下,您会发现Property List。别担心,OS X和iOS的属性列表是一样的。

当你打开这个文件,你会看到,你可以创建数组,字典,字符串值,等你的准确格式将取决于你的应用程序,但大体上说:

  • 你的顶层对象将是一个类别数组
  • 您的类别将是一个包含标题字符串和一系列问题的字典。
  • 您的问题将成为一个包含问题,提示和可能的答案阵列的字典。
  • 你的答案将是一个包含文本以及是对还是错的字典。

从那里,你可以像下面这样加载所有的数据:

NSString *path = [[NSBundle mainBundle] pathForResource:@"questions" ofType:@"plist"]; 
NSArray *categories = [NSArray arrayWithContentsOfFile:path]; 

categories对象是一个正常的数组并会反映您的plist的内容。因此,例如,通过类别循环和日志的名字,你会怎么做:

for (NSDictionary *category in categories) { 
    NSLog(@"%@", [category objectForKey:@"Title"]); 
} 

你去哪里从那里取决于你到底如何想你的用户界面的工作,但使用UINavigationController可能是一个如果你完全陷入困境,那么一个好的开始

+0

谢谢,吉姆。你的假设是正确的;它确实是一个只读文件。你给了我一个正确的方向! – Namhcir 2011-03-03 11:42:17

0

如果使用xml文件是一个选项,那么可以选择这个选项,或者你可能想看看yaml,它提供了一个很好的语法。更费力的选择是为您的客户建立一个Web应用程序来提交问题,然后直接从那里生成XML。