好的。所以我有一个从Wikipedia.org/WolframAlpha.com加载网页的应用程序。我想添加一个下载页面以供离线使用的按钮。我将如何使用Webkit进行此操作?我不相信我想要纯粹的缓存,因为我希望页面始终可用,直到用户删除它(我想我需要下载到硬盘驱动器或其他东西)。
我对Webkit不是很熟悉,所以任何帮助都会受到赞赏。目前我只有:
- (IBAction)downloadWebpage:(id)sender {
//Download Webpage
}
我的webView定义为*webView
。感谢。
答案 0 :(得分:0)
您可以将NSURLRequest与NSURLConnection一起使用以获取URL的数据,并将其本地保存在文件中。 UIWebView有一些方法可供使用,例如 - loadData:MIMEType:textEncodingName:baseURL:,它允许您在Web视图上呈现本地数据。
一些相关文档:NSURLRequest,UIWebview,NSURLConnection
答案 1 :(得分:0)
对不起,我有点晚了。
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:方法。