我有一个名为productView.swift的类,下面带有以下命令,可以在webView中加载一个网站:
webView.delegate = self
func loadRequest(){
webView?.loadRequest(NSURLRequest(URL: NSURL(string: "http://stackoverflow.com")!))
}
当我给他打电话时,这段代码效果很好!问题是我有一个UITableView类有一个菜单(侧栏菜单)当我在该表中选择一行时,我在UITableView类中使用此代码调用该函数loadRequest()
:
productView().loadMenuItem()
我在productView类中收到响应,但当他尝试加载URL时,我收到以下消息:
fatal error: unexpectedly found nil while unwrapping an Optional value
(lldb)
我如何解决这个问题?
答案 0 :(得分:1)
当您尝试将其转换为NSURL时,loadMenuItem()内部发生的任何内容都具有nil值。尝试这样的事情:
func loadMenuItem() {
if let url = NSURL(string: "http://MenuItemURLString),
let urlRequest = NSURLRequest(URL: url) {
webView?.loadRequest(urlRequest)
}
}
这至少应该告诉你你的nil可选
答案 1 :(得分: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)
}
}