2016-07-27 3 views
0

У меня есть класс, называемый productView.swift с помощью этой команды ниже, который загружает веб-сайт внутри WebView:фатальная ошибка: неожиданно нашли ноль в то время как разворачивание необязательное значение с веб-просмотра

webView.delegate = self 

func loadRequest(){ 
    webView?.loadRequest(NSURLRequest(URL: NSURL(string: "http://stackoverflow.com")!)) 
} 

Этот код работает очень хорошо, когда Я называю его! Проблема заключается в том, что у меня есть класс UITableView, которые имеют (барное меню Side) меню при выборе строки в этой таблице я называю эту функцию loadRequest() с этим кодом внутри моего класса UITableView:

productView().loadMenuItem() 

Я получаю ответ в моем классе productView, но когда он пытается загрузить URL-адрес, я получаю следующее сообщение:

fatal error: unexpectedly found nil while unwrapping an Optional value 
(lldb) 

Как я могу это решить?

+0

Когда вы говорите о классе под названием 'productView' ** (! Имя класса должно начинаться с заглавной буквы) **, Вы имеете в виду' ViewController'? –

+0

Да! верно! – Lacrifilm

+0

Да, я предполагал это. –

ответ

1

Прежде всего, имя класса должно начинаться с заглавной буквы!

Итак, проблема в том, вы вызываете ViewController так:

productView() 

Это создает новый экземпляр класса (ViewController), но это не так, чтобы инициализировать контроллер, так как при этом он создает пустой экземпляр контроллера. Вместо этого вы должны искать его в раскадровке:

if let storyboard = self.storyboard { 
    let controller = storyboard.instantiateViewControllerWithIdentifier("ProductViewController") 
    controller.methodFromController() 
} 

Затем вы вызываете свою функцию.

Я предлагаю вам проверить возможные ошибки при использовании дополнительной упаковки:

func loadRequest() { 
    if let url = NSURL(string: "http://stackoverflow.com"), let request = NSURLRequest(URL: url), webView = self.webView { 
     webView.loadRequest(request) 
    } 
} 
1

Что бы ни происходило внутри loadMenuItem() имеет значение nil, когда вы пытаетесь преобразовать его в NSURL. Попробуйте что-нибудь подобное вместо этого:

func loadMenuItem() { 
    if let url = NSURL(string: "http://MenuItemURLString), 
     let urlRequest = NSURLRequest(URL: url) { 
     webView?.loadRequest(urlRequest) 
    } 
} 

Это должно, по крайней мере сказать вам, где ваш ноль опционально

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

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