2009-05-27 61 views
1

我的目標是:跨應用程序中斷(例如,讀取的傳入SMS)繼續網絡會話。UIWebView含。內容編碼/解碼

解決方法A: 我試圖存儲在NSUserDefaults的一個UIWebView的內容是這樣的:

NSData *webViewData = [NSKeyedArchiver archivedDataWithRootObject:webView]; 
[[NSUserDefaults standardUserDefaults] setObject:webViewData forKey:kDefaultsWebViewObjectKey]; 

,然後恢復它想:

NSData *dta = [[NSUserDefaults standardUserDefaults] objectForKey:kDefaultsWebViewObjectKey]; 
webView = [NSKeyedUnarchiver unarchiveObjectWithData:dta]; 

但不包括內容。

方法B: 我也試圖得到的UIWebView的內容有:

NSString *content = [webView stringByEvaluatingJavaScriptFromString:@"document.body.innerHTML;"]; 

然後將其存儲,並再次檢索,然後試圖用它設置在一個UIWebView:

- (void)loadData:(NSData *)data MIMEType:(NSString *)MIMEType textEncodingName:(NSString *)encodingName baseURL:(NSURL *)baseURL

但innerHTML javascript沒有返回整個內容。

任何想法,建議等?

回答

1

我結束了使用NSURLRequests,然後將檢索到的HTTP正文和cookie存儲到NSUserDefaults。

重新進入應用程序後,我讀取這些並在UIWebView和NSHTTPCookieStorage中再次設置它們,然後清除這些鍵的NSUserDefaults。

0

如果您的文檔不引用任何資源(或不那麼明確),你應該能夠恢復outerHTML:

NSString *content = [webView stringByEvaluatingJavaScriptFromString:@"document.documentElement.outerHTML;"]; 

對於你將不得不也恢復滾動和縮放流暢的體驗屬性並顯示一個緩存表示,而webview加載

+0

不幸的是,返回一個空字符串 – 2009-05-27 18:11:04