我正在制作iPhone应用,它将下载PDF文件并将其显示在webView中。 但是我的脚本不会显示下载的PDF。它会下载并将其保存在Documents中,但webView不会显示它。
这是我的剧本:
NSString *path = [[NSBundle mainBundle] pathForResource:@"3" ofType:@"pdf"];
NSURL *urlen = [NSURL fileURLWithPath:path];
NSMutableURLRequest *urlRequest = [NSMutableURLRequest requestWithURL:urlen];
[webView loadRequest:urlRequest];
[webView setScalesPageToFit:YES];
答案 0 :(得分:2)
来自NSURL
official documentation on NSURL
的官方文档。
将nil
作为fileURLWithPath:
的参数发送会产生异常。
问题实际上是[[NSBundle mainBundle] pathForResource:ofType:]
。这将返回nil
,而不是文件的实际路径。
这里的问题实际上是[NSBundle mainBundle]
指的是与您的应用捆绑在一起的文件。您需要查看应用程序的文档目录,该目录是存储已下载文件的位置。
此方法将为您提供应用程序文档目录的路径:
NSString* documentsPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) firstObject];
现在,只需将文件名附加到此路径:
NSString *pdfPath = [documentsPath stringByAppendingPathComponent:@"3.pdf"];
为了获得良好的衡量标准(因为崩溃总是很糟糕),请确保文件存在:
BOOL fileExists = [[NSFileManager defaultManager] fileExistsAtPath:pdfPath];
并完成如下:
if (fileExists) {
NSURL *urlen = [NSURL fileURLWithPath:pdfPath];
NSMutableURLRequest *urlRequest = [NSMutableURLRequest requestWithURL:urlen];
[webView loadRequest:urlRequest];
[webView setScalesPageToFit:YES];
} else {
// probably let the user know there's some sort of problem
}