Я хочу отправить свое приложение со встроенным FAQ на странице настроек.FAQ прост:
1) У нас есть табличное представление, в котором перечислены все вопросы.Один на ячейку.
2) Когда пользователь нажимает на один из этих вопросов, мы перемещаемся к контроллеру подробного представления, который показывает вопрос жирным шрифтом, а затем ответ.Очень просто.
Сложная часть: Каков оптимальный способ снабдить контроллер представления таблицы и представления подробностями строками?
Плохие идеи (с моей точки зрения):
Жестко закодируйте все строки и работайте с гигантскими if
или switch
монстрами.
Положитесь на NSLocalizedString()
, чтобы получить локализованную версиюответ.Эти файлы строк не выглядят так, как будто они предназначены для очень больших строк.Просто для нескольких предложений или слов в строке.С тоннами текста часто задаваемых вопросов эти строковые файлы стали бы ужасающими.
Вот как я бы попытался это сделать, но вы можете предложить лучший способ:
Решение 1)
Создайте файл JSON, в котором сущности имеют три поля: ID, Вопрос и Ответ.ID поможет нам отследить, какой ответ мы должны загрузить после того, как пользователь коснулся ячейки.
Локализовать этот файл JSON.
Когдазагружается табличное представление, считывается в память и анализируется, просто чтобы прочитать вопросы и идентификаторы (да, не идеально, верно?)
Когда пользователь касается ячейки, либопередайте идентификатор только для повторного извлечения всего, или, может быть, лучше: передайте строки идентификатора, вопроса и ответа в контроллер представления сведений.
Решение 2)
Как 1, но вместо этого используйте Core Data.Вероятно, лучше для памяти и производительности, но, вероятно, труднее поддерживать (нужно возиться с файлом SQLite3 для построения FAQ, нужна по крайней мере хорошая IDE, чтобы не сойти с ума).Предостережение: Нельзя легко передать это переводчикам.Тонны ручной работы только для создания этого файла SQLite3.Файлы, локализованные в папках локализации.
Решение 4)
Два разделенных файла JSON: один со всеми идентификаторами и вопросами.Другой со всеми идентификаторами и ответами.Файлы, локализованные в папках локализации.
Решение 5)
Файл JSON со всеми идентификаторами и вопросами.Для каждого идентификатора есть соответствующий текстовый файл ответа.Таким образом, мы не заканчиваем тем, что загружаем тонны данных в память только для того, чтобы извлечь небольшую их часть.
Решение 6)
Использовать то, что уже существует, илидругой подход.Предложения?