Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用webView ios显示下载的PDF文件_Ios_Objective C_Pdf_Webview - Fatal编程技术网

使用webView ios显示下载的PDF文件

使用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 = [

我正在制作一个iPhone应用程序,它将下载一个PDF文件并在网络视图中显示。 但是,我的脚本不会显示下载的PDF。它确实下载并保存在文档中,但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];

来自
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字符串参数'该死,你很好。。。!很有效,非常感谢。在过去的几天里,我一直在努力解决这个问题,现在它就可以工作了!!谢谢。。