2011-01-14 2 views
0

WebView에서 WebArchive를 만들려고합니다. 작동하지만 편집 된 콘텐츠로 작업 할 때 문제가 발견되었습니다.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] 
    ]]; 

나는 웹보기의 내용에 대한 모든 편집이 WebArchive에 저장되지 않는다 : 이것은 내가 현재하고있는 중이 것입니다. 이 작업을 수행하려면 변경 사항을 원래 파일로 다시 커밋해야합니까? WebView에있는 내용을 기반으로 저장하고 싶습니다. 어떤 도움을 주시면 감사하겠습니다. 감사!

+0

그게 내가하고있는 일이고 OK (writeToFile : atomically :)입니다. webviewive의 내용을 webview로 다시로드하는 데 문제가있는 것 같습니다. destinationPath에 작성한 파일이 편집 된 파일인지 여부를 확인할 수 있습니까? –

+0

실제로 WebView에 HTML 파일 (input.html)을로드하고 WebArchive (output.webarchive)에 저장하려고합니다. 저장 기능은 작동하지만 원본 파일에서 WebArchive를 생성 한 것으로 보이며 변경 사항을 무시합니다. 변경 사항을 말하면 [webView setEditable : YES]를 설정 한 다음 텍스트를 삭제하거나 추가 한 다음 WebArchive를 저장합니다. 변경 사항이 없으면 결과가 출력되지 않습니다. 그게 네가 일한다고 말하는거야? – David

+0

[dataSource mainResource]는 "데이터 소스를 나타내는 웹 리소스를 반환합니다. 반환되는 내용은 다운로드 한 원본 데이터를 기반으로합니다. 반환 된 값을 사용하여 webArchive 메서드를 사용하는 대신 WebArchive 객체를 만들 수 있습니다." Apple Reference Library (hhttp : //developer.apple.com/library/mac/documentation/cocoa/Reference/WebKit/Classes/WebDataSource_Class/Reference/Reference.html)에 따르면. 이 시점에서 WebView에서 소스 DOM을 가져온 다음 WebArtive를 만들고 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]; 

누군가를 돕는 희망.

관련 문제