【问题标题】:Thread 1: EXC_BAD_INSTRUCTION (code=EXC_I386_INVOP, subcode=0x0) with WebView SWIFT线程 1:EXC_BAD_INSTRUCTION (code=EXC_I386_INVOP, subcode=0x0) 与 WebView SWIFT
【发布时间】:2016-12-06 17:46:58
【问题描述】:

我是 Swift 和 Stack Overflow 的初学者。首先,我在网上研究了我的问题并浏览了所有相关问题。我希望得到的答案非常模糊(swift - EXC_BAD_INSTRUCTION (code=EXC_I386_INVOP, subcode=0x0) with dataTaskWithUrl),所以我希望得到更清晰的答案。我正在尝试使用 Webview 显示一个 url,并且我不断收到错误“线程 1:EXC_BAD_INSTRUCTION (code=EXC_I386_INVOP, subcode=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)

     }
}

【问题讨论】:

  • 您的 webview 可能没有正确连接到您的故事板中
  • @dan 你能详细说明一下吗?我是初学者,所以如果我能知道“正确连接”是什么意思,那就太好了:) 谢谢!
  • 可以加个异常断点吗?

标签: ios swift webview


【解决方案1】:

问题可能是你的 webview 可能是 nil。

要快速检查这一点,您需要使用assistant editor(您可以在其中看到拆分视图)在一侧显示故事板,在另一侧显示代码。

通过这种方式,您可以检查@IBOutlet 是否正确绑定。通过将鼠标放在每个 Web 视图左侧的功能区上,它将突出显示绑定到哪个元素:

如果您的变量未绑定,您可以看到一个空圆圈而不是一个完整的圆圈。

您首先检查一下,以确保元素被正确绑定。

【讨论】:

    【解决方案2】:
    • 可能,这个 UIWebViews 之一是 nil。这就是为什么,您有错误“致命错误:在展开可选值时意外发现 nil”。证明您已将所有 IBOutlets 与 Storyboard 中的 webViews 连接起来(我认为,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
          }
      }
      
      • 对于每个 webview 以此类推

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-05-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-10-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多