2014-05-18 144 views
2

我正在製作iPhone應用程序,它將下載PDF文件並將其顯示在webView中。 但是我的腳本不會顯示下載的PDF。它會下載並保存在文檔中,但webView不會顯示它。使用webView顯示下載的PDF文件ios

這裏是我的腳本:

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

究竟發生了什麼?你有任何錯誤?什麼都顯示? – nhgrif

+0

嗨,是啊忘了寫他們...... ;-) 我得到:「線程1:信號SIGABRT」 它的工作原理是,如果我從一開始就把pdf文件作爲ind文件夾,但是當我從網上下載pdf時,它使這個錯誤... – Jansen82

+0

有很多更多的信息與該錯誤相關...它實際上發生了什麼?什麼是實際的堆棧跟蹤? – nhgrif

回答

2

從官方文檔上NSURLofficial 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 
} 
+0

該死的,你很好......!它的作品,非常感謝你。過去幾天,我試圖弄清楚這個問題,現在它正常工作!非常感謝.. – Jansen82