2011-07-13 10 views
1

NSKeyedArchiverを使用してUIWebViewオブジェクトをアーカイブし、後で同じ状態のNSKeyedUnarchiverを使用して復元しようとしています。 Archiving/Unarchivingは機能しますが、UIWebViewは再びアーカイブされていないときは空白です(ロードしたウェブサイトでアーカイブしました)が、アーカイブする前と同じウェブサイトを持つ必要があります。UIWebView Archiving - 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ページをアーカイブする場合は、自分で行う必要があります。次に、Webビューを再作成するときにページをリロードします。

ウェブサイトのデータを取得するには、自分で読み込み(NSURLConnectionなどを使用)し、到着時にそれを保存する必要があります。

私はASIHTTP libraryを見ています。これはNSURL ...メソッドを(IMHO)で置き換えています。彼らはちょうどあなたがしようとしていることを行うべき新しいメソッドを追加しました - それはASIWebPageRequestと呼ばれています。

希望に役立ちます。

+0

完璧に動作します - たとえばあるのでしょうか? – Pripyat

+0

はい、私の答えの中の2番目のリンクを途中で停止します。 – deanWombourne

1

このS.O. topicをご覧ください。

それはあなたにとってはあまり役に立ちませんが、他の人がそれほど成功することなく試したようです。

+0

モバイルSafariは何とかしていますが、私はAppleが彼らが使っている良いAPIをいくつか制限してミックを取っているというのは嫌です。 – Pripyat

関連する問題