对不起,我有点晚了。
WebKit 内置了它。正确的做法是使用 WebArchive。有关这方面的更多信息,请参阅 WebArchive 的 -data 方法。
以下代码未经测试,但它应该解释您需要了解的内容。
WebFrame *webFrame = [webView mainFrame];
WebDataSource *dataSource = [webFrame dataSource];
WebArchive *webArchive = [dataSource webArchive];
NSString *filename = @"MyTestArchive.webarchive";
NSString *path = @"~/MyArchives";
NSString *pathname = [path stringByAppendingPathComponent:filename];
NSError *error = NULL;
pathname = [pathname stringByExpandingTildeInPath];
[[webArchive data] writeToFile:pathname options:NSAtomicWrite error:&error];
您也可以通过以下方式获取 webArchive:
NSString *urlString = @"http://www.example.com/";
NSURL *url = [NSURL URLWithString:urlString];
WebArchive *webArchive = [[WebArchive alloc] initWithContentsOfURL:url];
[webArchive autorelease];
... (save [webArchive data] like above)
要获取文件名,您可以尝试询问 NSURL ...
url = [[dataSource response] URL];
filename = [[url relativePath] lastPathComponent];
if(0 == [filename length] || [filename isEqualToString:@"/"])
{
// try getting a name that makes sense. If you have a dataSource, try this...
filename = [dataSource pageTitle];
if(0 == [filename length])
{
filename = @"index";
}
}
filename = [filename stringByAppendingPathExtension:@"webarchive"];
如果要加载 webArchive,可以使用 WebFrame 的 -loadArchive: 方法。