使用webView ios显示下载的PDF文件
我正在制作一个iPhone应用程序,它将下载一个PDF文件并在网络视图中显示。 但是,我的脚本不会显示下载的PDF。它确实下载并保存在文档中,但webView不会显示它 这是我的剧本:使用webView ios显示下载的PDF文件,ios,objective-c,pdf,webview,Ios,Objective C,Pdf,Webview,我正在制作一个iPhone应用程序,它将下载一个PDF文件并在网络视图中显示。 但是,我的脚本不会显示下载的PDF。它确实下载并保存在文档中,但webView不会显示它 这是我的剧本: NSString *path = [[NSBundle mainBundle] pathForResource:@"3" ofType:@"pdf"]; NSURL *urlen = [NSURL fileURLWithPath:path]; NSMutableURLRequest *urlRequest = [
NSString *path = [[NSBundle mainBundle] pathForResource:@"3" ofType:@"pdf"];
NSURL *urlen = [NSURL fileURLWithPath:path];
NSMutableURLRequest *urlRequest = [NSMutableURLRequest requestWithURL:urlen];
[webView loadRequest:urlRequest];
[webView setScalesPageToFit:YES];
来自
NSURL
上的官方文档
将nil
作为参数发送到fileURLWithPath:
会产生异常
实际上,问题出在[[NSBundle mainBundle]pathForResource:ofType:][/code>上。这将返回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
}
到底发生了什么?你有错误吗?有什么显示吗?嗨,是的,忘了写了…;-)我得到:“线程1:signal SIGABRT”如果我从一开始就把pdf文件放在ind文件夹中,它是有效的,但是当我从网上下载pdf时,它会产生错误…有很多与错误相关的信息。。。它实际上发生在哪一行?那么实际的堆栈跟踪是什么呢?首先,我对这种代码很熟悉,所以希望我不要问dumb!?但它显示的那行“线程1:…”位于:NSURL*urlen=[NSURL fileURLWithPath:path];并写入:DiskImageCache:无法解析旧目录的绝对路径。***由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,原因:'***-[NSURL initFileURLWithPath:]:nil字符串参数'该死,你很好。。。!很有效,非常感谢。在过去的几天里,我一直在努力解决这个问题,现在它就可以工作了!!谢谢。。