2011-07-13 44 views
1

我想存檔我的UIWebView對象使用NSKeyedArchiver並在以後使用NSKeyedUnarchiver在相同的狀態恢復它。存檔/取消存檔的作品,但UIWebView是空白時,再次解除存檔(我存檔它與一個網站加載),但我需要它有它之前我存檔它的網站。UIWebView存檔 - iPhone

我試圖拯救UIWebViewNSURLRequestHTTPBody,但總是返回(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代碼。

謝謝!

回答

1

你正在嘗試做一些NSKeyedArchiver不會做的事情。抱歉!如果要存檔網頁,則必須自己完成,然後在重新創建Web視圖時重新加載頁面。

要獲取網站數據,您需要自己加載(使用NSURLConnection等),並在它到達時進行存儲。

我會看看ASIHTTP library - 它用(恕我直言)替換NSURL ...方法一個更好,更靈活的對象集。他們剛剛添加了一種新的方法,該方法應該完成您正在嘗試執行的操作 - 它被稱爲ASIWebPageRequest

希望有所幫助。

+0

我也不太清楚如何使用ASIWebPageRequest - 有一個例子嗎? – Pripyat

+0

是的,在我的答案中的第二個鏈接的一半。 – deanWombourne

1

你可能會看看這個S.O. topic

它不會對你真的有用,但似乎其他人嘗試過,沒有太大的成功。

+0

Mobile Safari以某種方式做它,我討厭蘋果通過限制他們使用的一些良好的API來吸收這個問題。 – Pripyat