2011-01-14 12 views
0

WebArchiveをWebViewから作成しようとしています。私はそれを働かせましたが、編集したコンテンツを試してみると問題が見つかりました。WebArchive webView編集可能なコンテンツにどのように保存しますか?

[webView setEditable:YES]; 
WebDataSource *dataSource = [[webView mainFrame] dataSource]; 

WebArchive *archive = [[WebArchive alloc] 
     initWithMainResource:[dataSource mainResource] 
     subresources:nil 
     subframeArchives:nil]; 

[[archive data] writeToFile:destinationPath atomically:YES]; 
[[webView mainFrame] 
loadRequest:[NSURLRequest 
    requestWithURL: 
    [NSURL fileURLWithPath:destinationPath] 
    ]]; 

私はWebViewの中にコンテンツに加えた編集がWebArchiveには格納されません。これは私が現在やっているものです。これを行うには、元のファイルに変更をコミットする必要がありますか?私はそれをWebViewにあるコンテンツに基づいて保存したいと思います。どんな助けもありがとう。ありがとう!

+0

これは私がやっていることです。ここでOKです(つまり、writeToFile:atomically :)。 webarchiveのコンテンツをwebviewに読み込む際に何か問題があると思います。 destinationPathで作成したファイルが、編集したファイルであるかどうかを確認できますか? –

+0

私は実際にWebViewにHTMLファイル(input.html)をロードして、それをWebArchive(output.webarchive)に保存しようとしています。保存は機能しますが、元のファイルからWebArchiveを作成しているように見え、変更は無視されます。私が変更を言うと、私は[webView setEditable:YES]を設定してからテキストを削除または追加した後、WebArchiveを保存します。変更しても出力に反映されません。それはあなたが働いていると言いますか? – David

+0

[dataSource mainResource]は、 "データソースを表すWebリソースを返します。返される内容は、ダウンロードした元のデータに基づいており、WebArchiveメソッドを使用する代わりに、返された値を使用してWebArchiveオブジェクトを作成できます。アップルリファレンスライブラリ(hhttp://developer.apple.com/library/mac/documentation/cocoa/Reference/WebKit/Classes/WebDataSource_Class/Reference/Reference.html)によると、この時点で、WebViewからソースDOMを取得し、WebArchiveを作成してWebDataSourceを作成する方法が必要だと思います。どのようにそれを行うにはどのような考え? – David

答えて

0

しばらく掘り下げた後、自分の質問に対する答えを見つけ出すことができました。ここに私がそれをした方法があります:

WebResource *dataSource = [[[[webView mainFrame] DOMDocument] webArchive] mainResource]; 

WebArchive *archive = [[WebArchive alloc] 
     initWithMainResource:dataSource 
     subresources:nil 
     subframeArchives:nil]; 

[[archive data] writeToFile:@"output.webarchive" atomically:YES]; 

誰かを助けることを望みます。

関連する問題