我想在设置页面上使用内置常见问题解答发送我的应用。常见问题很简单:
1)我们有一个表格视图,列出了所有问题。每个细胞一个。
2)当用户点击其中一个问题时,我们会滑动到详细视图控制器,该控制器以粗体字母显示问题,然后是答案。非常简单。
困难的部分:用字符串提供表视图和详细视图控制器的最佳方法是什么?
糟糕的想法(从我的观点来看):
对所有字符串进行硬编码,并与巨型if
或switch
怪物一起使用。
依靠NSLocalizedString()
来获取答案的本地化版本。这些字符串文件看起来不像是用于非常大的字符串。仅为每行几句话或单词。随着大量的FAQ文本,这些字符串文件将变得可怕。
这就是我尝试这样做的方法,但你可以提出一个更好的方法:
解决方案1)
创建一个JSON文件,其中实体有三个字段:ID,Question和Answer。 ID将帮助我们跟踪用户点击单元格后必须加载的答案。
本地化该JSON文件。
当表格视图加载时,将其读入内存并解析它,只是为了读出问题和ID(是的,不太理想,对吧?)
当用户点击一个单元格时,要么只是传递ID以重新获取整个内容,要么更好:将ID,问题和答案字符串传递给详细信息视图控制器。
< / LI>解决方案2)
与1相似,但请使用Core Data。可能更好的内存和性能,但可能更难维护(必须乱用SQLite3文件来构建常见问题解答,至少需要一个好的IDE来做到这一点,不要发疯)。警告:不能轻易将它传递给翻译。大量的手工工作只是为了创建SQLite3文件。本地化文件夹中的文件。
解决方案4)
两个分割的JSON文件:一个包含所有ID和问题。另一个有所有的ID和答案。本地化文件夹中的文件。
解决方案5)
包含所有ID和问题的JSON文件。对于每个ID,都有匹配的答案文本文件。因此,我们最终不会将大量数据加载到内存中,只是为了提取一小部分数据。
解决方案6)
使用已存在的东西或不同的方法。建议?
答案 0 :(得分:2)
通常情况下,您可以本地化localizedStrings
- 文件,以便在运行NSLocalizedString
时翻译它们。您可能不知道的是,这基本上适用于所有类型的文件,因此plist
也是如此:
plist
- 文件。[NSArray arrayWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"faq" ofType:@"plist"]];
UITableView
中实施。 (- (NSInteger)numberOf...
=&gt; return [faq count];
)。哦,我使用plist
- 文件而不是JSON或XML,因为Apple使用它,因为它很容易实现(内置NSArray - arrayWithContentsOfFile
),你可以很容易地维护它xcode中。