线程1:致命错误:在解开可选值时意外地发现nil - 我是否包装错误? [重复]

问题描述 投票:-4回答:2

试图在Swift 3中创建一个webview控制器。在viewDidLoad()函数的最后一行,我收到错误Thread 1: Fatal error: Unexpectedly found nil while unwrapping an Optional value

据我所知,只有在未设置某些内容但设置了webView,loadRequest存在且请求变量存在的情况下才会发生此错误。我没有正确包装东西吗?或者在某处改变了语法?

@IBOutlet weak var webView: UIWebView!

override func viewDidLoad() {
    super.viewDidLoad()

    let url = URL (string: "https://example.com");
    let request = URLRequest(url: url!);
    webView.loadRequest(request);
}

我还没有找到任何可以解释究竟发生了什么的东西。我试着尽可能地记录下来。

这似乎与包装问题无关。

ios swift optional
2个回答
2
投票

您应该安全地解包,然后使用调试器逐步执行代码以将变量设置为nil。

@IBOutlet weak var webView: UIWebView!

override func viewDidLoad() {
    super.viewDidLoad()

    guard let url = URL(string: "https://example.com") else {
        return
    }
    let request = URLRequest(url: url)
    webView?.loadRequest(request)
}

1
投票

UIWebView已被弃用,所以你应该在某些时候使用WKWebView

第一件事是第一件事:

1)除非你在同一行上放置多个命令,否则Swift中不需要分号。

2)检查您与IBOutlet的连接。我怀疑你的问题住在这里。在Xcode中,您可以在这里查看它们。最简单的方法是断开连接并重新连接它们。

enter image description here

3)远离力量展开选项。相反,使用guard语句,如下所示:

guard let url = URL(string: "https://www.youtube.com/watch?v=dQw4w9WgXcQ") else { return }
// now the optional URL is unwrapped without risking a crash.
let request = URLRequest(url: url) 
webView.loadRequest(request)

这是repo I threw up的链接。

© www.soinside.com 2019 - 2024. All rights reserved.