【问题标题】:UIWebView Archiving - iPhoneUIWebView 归档 - iPhone
【发布时间】:2011-07-13 12:23:30
【问题描述】:

我正在尝试使用NSKeyedArchiver 归档我的UIWebView 对象,并在以后使用NSKeyedUnarchiver 以相同的状态恢复它。归档/取消归档工作,但UIWebView 再次取消归档时为空白(我在加载网站的情况下将其归档),但我需要它拥有与归档之前相同的网站。

我尝试保存NSURLRequestUIWebViewHTTPBody,但它总是返回(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.outerHTMLdocument.documentElement.innerHTML,但这不是我想要的不是。我需要保留整个网站以供以后使用,而不仅仅是 HTML 代码。

谢谢!

【问题讨论】:

    标签: iphone objective-c uiwebview


    【解决方案1】:

    您正在尝试做一些 NSKeyedArchiver 不会做的事情。对不起!如果您想归档网页,您必须自己完成,然后在重新创建网页视图时重新加载页面。

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

    我会看看ASIHTTP library - 它用(恕我直言)一组更好、更灵活的对象替换了 NSURL... 方法。他们刚刚添加了一个新方法,它应该完全符合您的要求 - 它称为 ASIWebPageRequest

    希望对您有所帮助。

    【讨论】:

    • 我不太清楚如何使用 ASIWebPageRequest - 有例子吗?
    • 是的,在我的回答中第二个链接的一半。
    【解决方案2】:

    你可以看看这个S.O. topic

    它对你并不会真正有用,但似乎其他人已经尝试过,但没有太大成功。

    【讨论】:

    • Mobile Safari 以某种方式做到了这一点,我讨厌 Apple 通过限制他们使用的一些好的 API 来取胜。
    【解决方案3】:

    您可以使用以下代码: https://github.com/rnapier/RNCachingURLProtocol 实现简单,完美运行

    【讨论】:

      猜你喜欢
      • 2010-11-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多