fatal error: unexpectedly found nil while unwrapping an Optional value with web view

fatal error: unexpectedly found nil while unwrapping an Optional value with web view

我有一个名为 productView.swift 的 class,使用下面的命令在 webView 中加载网站:

 webView.delegate = self

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

当我给他打电话时,这段代码非常有效!问题是我有一个 UITableView class 有一个菜单(侧边栏菜单),当我 select 中的一行 table 我用这段代码调用那个函数 loadRequest()在我的 UITableView 里面 class:

productView().loadMenuItem()

我在 productView class 中收到响应,但是当他尝试加载 URL 时,我收到以下消息:

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

我该如何解决这个问题?

当您尝试将 loadMenuItem() 转换为 NSURL 时,无论在 loadMenuItem() 中发生什么,它的值都是 nil。尝试这样的事情:

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

这至少应该告诉你你的 nil 选项在哪里

首先,class名字必须以大写字母开头!

所以,问题是您正在这样调用 ViewController

productView()

这会创建 class (ViewController) 的新实例,但这不是初始化控制器的方法,因为这样做会创建一个空的控制器实例。相反,您必须在故事板中寻找它:

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

然后你调用你的函数。

我建议您使用可选包装检查可能的错误:

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