我正在尝试使用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。
是的,我知道UIWebView
和document.documentElement.outerHTML
,但那是不我正在寻找的东西。我需要保留整个网站以供日后使用,而不仅仅是HTML代码。
谢谢!
答案 0 :(得分:1)
你正在尝试做一些NSKeyedArchiver不会做的事情。抱歉!如果要存档网页,则必须自己完成,然后在重新创建Web视图时重新加载页面。
要获取网站数据,您需要自己加载(使用NSURLConnection等)并在它到达时存储它。
我会看一下ASIHTTP library - 它用(IMHO)替换NSURL ...方法,这是一组更好,更灵活的对象。他们刚刚添加了一种新方法,它应该完全按照您的要求进行操作 - 它被称为ASIWebPageRequest。
希望有所帮助。
答案 1 :(得分:1)
您可以查看此S.O. topic。
对你来说这不会有用,但似乎其他人在没有取得多大成功的情况下尝试过它。
答案 2 :(得分:1)
您可以使用此代码: https://github.com/rnapier/RNCachingURLProtocol 易于实施,完美运作