2015-06-17 2 views
0

Я пытаюсь загрузить PDF в UIWebView, но при использовании loadRequest, я получаю ошибку unexpectedly found nil while unwrapping an Optional. Мой соответствующий код приведен ниже:NSURL/NSURLRequest неожиданно ноль

let url = NSURL(string: "http://www.urartuuniversity.com/content_images/pdf-sample.pdf")! 

    println(url.fileURL) 

    println("The URL is \(url.absoluteURL!)") 

    let request = NSURLRequest(URL: url) 

    webView.loadRequest(request) 

Вторая строка выводит код ошибки (неудивительно), но третий выводит правильный URL. webView - это подключенный интерфейс UIWebView.

Я рассмотрел несколько примеров подобных ошибок, но ни один из них не был применим, особенно потому, что NSURL, похоже, работает из-за корректного вывода URL.absoluteURL!, как и множество других подобных команд.

Я также видел ссылки на RFC 2396, но, глядя на документацию W3, мой URL, похоже, следует этим рекомендациям, но если это не так, то, пожалуйста, скажите мне, какой формат и как изменить URL (потому что мне придется буквально изменить еще тысячи, и этот PDF-файл является просто примером PDF, который я нашел в Интернете).

При поиске в разделе отладки url является NSURL, а место, где указано его значение, указывает URL-адрес PDF, а не адрес памяти, что может частично отразиться на некоторых моих проблемах.

Редактировать: Чтобы сделать мою ситуацию еще более странной, потому что я использую универсальное приложение с разделенным видом и табличным представлением, когда я загружаю iPad, PDF загружается правильно, но в тот момент, когда я возвращаюсь к главному виду и щелчку на чем-то, перезагружая подробный вид, найденное фатальное исключение. Если это не имеет смысла, скажите мне, и я постараюсь сделать его более понятным.

+0

Ваш URL-адрес не является нулевым, поэтому заголовок вопроса может быть немного вводить в заблуждение. В любом случае, я предлагаю вам дважды проверить, правильно ли подключено все с вашим построителем интерфейса. –

+0

Спасибо за предложение как для заголовка, так и для интерфейса, и все подключено в построителе интерфейса. – dunnmifflsys

+0

Попробуйте 'if let webView = webView {webView.loadRequest (request)} else {print (" webView is nil ")}' просто проверить, по какой причине ваш веб-браузер ушел в то время, когда вы пытаетесь загрузить запрос. –

ответ

2

Проблема в том, что вы не знаете, что такое nil. Добавьте больше протоколирование, как это:

let url = NSURL(string: "http://www.urartuuniversity.com/content_images/pdf-sample.pdf")! 
let request = NSURLRequest(URL: url) 
println(url) 
println(request) 
println(webView) 
webView.loadRequest(request) 

Таким образом, наложив свое приложение через свои шаги и пытается воспроизвести аварии, вы откроете для себя, просто перед аварии, точно , что равна нулю. Я предполагаю, что это webView, но угадать - это не программирование - и проблема в том, что до сих пор вы просто гадают. Не догадывайтесь. У вас есть отладчик! Отлаживать!!!

+0

yeah..i попробовал вышеприведенный образец ... и его работа для меня –

+0

После этого вы были правы, webView был ноль, но я удалил и воссоздал соединение, но он все еще не работает, плюс это не работает объясните, как это работает в первый раз на iPad. Есть идеи? – dunnmifflsys

+0

Я бы сказал, что это другой вопрос. Теперь, когда вы знаете, что происходит, вы можете начать думать о том, почему. По вашему мнению, в вашем новом вопросе вам нужно будет описать иерархию и алгоритмы вашего представления. – matt

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