我是Swift的初学者以及Stack Overflow的初学者。首先,我在网上研究了我的问题并完成了所有相关的问题。我希望的答案非常模糊(swift - EXC_BAD_INSTRUCTION (code=EXC_I386_INVOP, subcode=0x0) with dataTaskWithUrl)所以我希望得到更清楚的答案。我正在尝试使用Webview来显示网址,并且我继续收到错误'线程1:EXC_BAD_INSTRUCTION(代码= EXC_I386_INVOP,子代码= 0x0)'和'致命错误:在展开“可选值”时意外发现nil。有人可以帮帮我吗?谢谢!
以下是代码:
import UIKit
class ViewController: UIViewController {
@IBOutlet var MoongateWebView: UIWebView!
@IBOutlet var ManagebacWebView: UIWebView!
@IBOutlet var MoodleWebView: UIWebView!
@IBOutlet var LibraryWebView: UIWebView!
@IBOutlet var CCAWebView: UIWebView!
@IBOutlet var gmailWebView: UIWebView!
override func viewDidLoad() {
super.viewDidLoad()
//loading Moongate on the screen
let mgurl = NSURL(string: "http://moongate.cis.edu.hk/")
let mgrequest = NSURLRequest(URL: mgurl!)
MoongateWebView.loadRequest(mgrequest) //Error Occurs
//loading Managebac on the screen
let mburl = NSURL(string:"https://cishk.managebac.com/login" )
let mbrequest = NSURLRequest(URL: mburl!)
ManagebacWebView.loadRequest(mbrequest)
//loading Moodle on the screen
let mdurl = NSURL(string: "http://moodle.cis.edu.hk/moodle/")
let mdrequest = NSURLRequest(URL: mdurl!)
MoodleWebView.loadRequest(mdrequest)
//loading Library on the screen
let liburl = NSURL(string: "http://library.cis.edu.hk/")
let librequest = NSURLRequest(URL: liburl!)
LibraryWebView.loadRequest(librequest)
//loading CCAs on the screen
let ccaurl = NSURL(string: "http://moongate.cis.edu.hk/content/page.aspx?e=F17A69B3-62F1-46FF-A474-8776C2D2492D")
let ccarequest = NSURLRequest(URL: ccaurl!)
CCAWebView.loadRequest(ccarequest)
//loading gmail on the screen
let gmailurl = NSURL(string: "https://mail.google.com/mail/u/0/")
let gmailrequest = NSURLRequest(URL: gmailurl!)
gmailWebView.loadRequest(gmailrequest)
}
}
答案 0 :(得分:1)
可能的问题是你的webview可能是零。
要快速检查这一点,您需要使用assistant editor
(您可以在其中看到拆分视图)在一侧显示故事板,在另一侧显示代码。
通过这种方式,您可以检查@IBOutlet
是否正确绑定。通过将鼠标放在每个Web视图左侧的功能区上,它将突出显示绑定到哪个元素:
如果您的变量未绑定,则可以看到一个空圆圈而不是一个完整的圆圈。
首先检查一下,确保元素绑定正确。
答案 1 :(得分:0)
可能是,这个UIWebViews之一是零。这就是为什么,你有错误'致命错误:在解开一个Optional值时意外地发现了nil'。证明您已将所有IBOutlet与故事板中的webView连接起来(我认为,dan意味着它)。并且有可能将代码更改为:
@IBOutlet var MoongateWebView: UIWebView?
@IBOutlet var ManagebacWebView: UIWebView?
@IBOutlet var MoodleWebView: UIWebView?
@IBOutlet var LibraryWebView: UIWebView?
@IBOutlet var CCAWebView: UIWebView?
@IBOutlet var gmailWebView: UIWebView?
override func viewDidLoad(){
super.viewDidLoad()
if let _ = MoongateWebView {
let mgurl = NSURL(string: "http://moongate.cis.edu.hk/")
let mgrequest = NSURLRequest(URL: mgurl!)
MoongateWebView!.loadRequest(mgrequest) //Error Occurs
}
}