Архивация UIWebView - iPhone - PullRequest
1 голос
/ 13 июля 2011

Я пытаюсь заархивировать мой UIWebView объект с помощью NSKeyedArchiver и восстановить его позже с помощью NSKeyedUnarchiver в том же состоянии.Архивирование / разархивирование работает, но UIWebView пусто при повторном архивировании (я заархивировал его с загруженным веб-сайтом), но мне нужно, чтобы он был на том же сайте, что и до того, как я его заархивировал.

Я пытался сохранить HTTPBody из NSURLRequest из UIWebView, но это всегда возвращает (null), поэтому я думаю, что я лаю там не то дерево.(или я ошибаюсь?)

Вот что я попробовал:

UIWebView*currentWebview = [[Controller sharedInstance] mainWebView];

NSData*webViewData = [NSKeyedArchiver archivedDataWithRootObject:currentWebview];

[sub setObject:webViewData forKey:@"Instance"]; //saves and decodes correctly, but that's a blank `UIWebView` even though I saved it with contents being loaded

NSData*body = [[currentWebview request] HTTPBody];  //returns (null) always, but the webview is not null and has a valid request

[sub setObject:body forKey:@"HTTP_Body"];

Что мне здесь не хватает?Мне нужно сохранить UIWebView, как это было, и загрузить его снова в том же состоянии без необходимости открывать URL на более позднем этапе.

И да, я знаю о document.documentElement.outerHTML и document.documentElement.innerHTML, но это не , что я ищу.Мне нужно сохранить весь сайт на потом, а не только HTML-код.

Спасибо!

Ответы [ 3 ]

1 голос
/ 13 июля 2011

Вы можете взглянуть на эту ТАКУЮ тему .

Это не будет действительно полезно для вас, но, похоже, другие люди пробовали это без особого успеха.

1 голос
/ 14 февраля 2013

Вы можете использовать этот код: https://github.com/rnapier/RNCachingURLProtocol прост в реализации, отлично работает

1 голос
/ 13 июля 2011

Вы пытаетесь сделать что-то, чего NSKeyedArchiver просто не сделает.Сожалею!Если вы хотите заархивировать веб-страницу, вы должны сделать это самостоятельно, а затем перезагрузить страницу при воссоздании веб-представления.

Чтобы получить данные веб-сайтов, вам необходимо выполнить загрузку самостоятельно (используя NSURLConnection и т. Д.) Исохраняйте его по мере поступления.

Я бы взглянул на библиотеку ASIHTTP - она ​​заменяет методы NSURL ... на (ИМХО) гораздо более приятный и более гибкий набор объектов.Они только что добавили новый метод, который должен делать именно то, что вы пытаетесь сделать - он называется ASIWebPageRequest .

Надеюсь, что это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...