UIWebView Archiving - iPhone

时间:2011-07-13 12:23:30

标签: iphone objective-c uiwebview

我正在尝试使用UIWebView归档我的NSKeyedArchiver对象,稍后使用相同状态的NSKeyedUnarchiver将其恢复。归档/取消归档有效,但UIWebView在再次归档时是空白的(我已经加载了网站对其进行归档),但是我需要它在归档之前拥有它所拥有的相同网站。

我已尝试保存HTTPBody NSURLRequest的{​​{1}},但总是返回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"]; ,然后再将其加载到同一状态,而不必在以后打开URL。

是的,我知道UIWebViewdocument.documentElement.outerHTML,但那是我正在寻找的东西。我需要保留整个网站以供日后使用,而不仅仅是HTML代码。

谢谢!

3 个答案:

答案 0 :(得分:1)

你正在尝试做一些NSKeyedArchiver不会做的事情。抱歉!如果要存档网页,则必须自己完成,然后在重新创建Web视图时重新加载页面。

要获取网站数据,您需要自己加载(使用NSURLConnection等)并在它到达时存储它。

我会看一下ASIHTTP library - 它用(IMHO)替换NSURL ...方法,这是一组更好,更灵活的对象。他们刚刚添加了一种新方法,它应该完全按照您的要求进行操作 - 它被称为ASIWebPageRequest

希望有所帮助。

答案 1 :(得分:1)

您可以查看此S.O. topic

对你来说这不会有用,但似乎其他人在没有取得多大成功的情况下尝试过它。

答案 2 :(得分:1)

您可以使用此代码: https://github.com/rnapier/RNCachingURLProtocol 易于实施,完美运作