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)
}
}
我有一个名为 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)
}
}