2014-05-18 3 views
2

Я делаю приложение для iPhone, которое будет загружать PDF-файл и отображать его в webView. Однако мой сценарий не покажет загруженный PDF. Он загружает его и сохраняет в документах, но webView не покажет его.Показать загруженный файл PDF с помощью webView 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

Привет, да, забыл написать их ... ;-) Я получаю: «Thread 1: signal SIGABRT» Он работает, если я помещаю папку pdf file 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

Смежные вопросы