Я программирую для iPhone, создавая приложение, которое показывает различные локально сохраненные HTML-страницы в UIWebView. Все страницы идентичны по структуре и стилю, с единственным отличием - их содержание.
Прямо сейчас у меня запрограммировано «Основное представление» (UITableView), и когда пользователь выбирает ячейку, общий навигационный контроллер помещает «Подробное представление» в стек, который содержит UIWebView. Когда будет отображен подробный вид, его HTML-содержимое WebView загружается в.
Поскольку все страницы структурно идентичны, я подумал, что было бы проще настроить страницу шаблона HTML и загрузить текст. Насколько я понимаю, так работает PHP. Пользователь загружает страницу Amazon для элемента, каждый из которых имеет идентичную структуру и стиль, но код PHP извлекает заголовок, описание и т. Д. Для этого конкретного элемента.
Я хочу знать, как лучше всего это сделать на iPhone с UIWebView. Поскольку я не веб-волшебник и не знаком с Javascript, не говоря уже о PHP, моя мысль заключалась в следующем:
Загрузить шаблон HTML из локального файла в объект NSString. Шаблон содержит теги со специальными идентификаторами, чтобы указать, куда идут фрагменты текста. Используйте NSString методы поиска и замены, чтобы найти каждый специальный тег и вставить соответствующие фрагменты текста.
Это будет просто для программирования, и я верю, что это будет довольно эффективно, тем более, что я делаю только 4-5 замен, когда загружаю страницу. Если у кого-то есть лучшее предложение (особенно полное предложение), я бы не стал его слышать.
Так вот, это не совсем моя проблема. Мне больше интересно, как лучше всего хранить и извлекать многострочные HTML-строки, которые будут вставлены в шаблон. Насколько я знаю, на обычных веб-страницах PHP извлекает фрагменты XML-файла или выполняет запросы к базе данных SQL.
Два метода хранения / извлечения данных, с которыми я знаком на iPhone, - это файлы Plist и файлы Strings. Файлы строк кажутся мне довольно удобными, так как они могут хранить многострочные строки, за исключением того, что мне придется экранировать каждую двойную кавычку в любом месте строки (а некоторые есть, так как это HTML) и что файлы Strings, кажется, специально разработаны Apple для интернационализации, а не динамических веб-страниц.
Что касается файлов Plist, вы можете легко иметь массив строк, но он не является многострочным. Редактор Plist в последней версии XCode показывает только одну строку за раз, что делает его немного раздражающим в работе, и еще раз заставляет меня чувствовать, что я иду против намеренного использования Apple Plist, заполняя его огромными строками. Во-вторых, единственный способ, которым я могу найти чтение данных из Plist, - это загрузить все это в NSData или сериализовать его в объекты и тому подобное. Я чувствую, что было бы глупо повторно сериализовать Plist каждый раз, когда мне нужно перенастроить мой UIWebView, и тратить впустую память на сериализацию Plist и сохранять результирующие объекты в памяти все время, пока работает мое приложение. Я полагаю, это не может занять , что много памяти, так как это просто текст, но я не совсем уверен.
Может случиться так, что вместо изменения HTML до его доставки в WebView у меня должен быть шаблон Javascript в HTML, который извлекает строки из локального XML-файла (а Objective-C просто анализирует ключевые строки в JS перед передачей HTML в WebView), чтобы логика JS WebView выполняла фактические замены. Однако я не знаю, как это сделать, и учебники по AJAX, которые я обнаружил, всегда ссылались на внешние серверы, библиотеки сценариев, которые я не знал, как использовать с UIWebView и т. Д.
В заключение, я был бы благодарен за любой совет о том, как это осуществить. Каким бы ни было ваше предложение, чем оно подробнее, тем лучше.