2016-08-01 13 views
0

Ich bin ein Anfänger bei Swift sowie auf Stack Overflow. Als erstes habe ich meine Frage online recherchiert und alle damit verbundenen Fragen durchgespielt. Die Antwort, auf die ich gehofft hatte, war sehr vage (swift - EXC_BAD_INSTRUCTION (code=EXC_I386_INVOP, subcode=0x0) with dataTaskWithUrl) und so hoffte ich auf eine klarere Antwort. Ich versuche, Webview zu verwenden, um eine URL anzuzeigen, und ich bekomme weiterhin den Fehler 'Thread 1: EXC_BAD_INSTRUCTION (Code = EXC_I386_INVOP, Subcode = 0x0)' und 'Schwerwiegender Fehler: unerwartet gefunden Null beim Entpacken eines optionalen Werts'. Könnte mir bitte jemand helfen? Vielen Dank! HierThread 1: EXC_BAD_INSTRUCTION (Code = EXC_I386_INVOP, Subcode = 0x0) mit WebView SWIFT

ist der Code:

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

Ihre Webansicht ist wahrscheinlich nicht korrekt in Ihrem Storyboard eingebunden – dan

+0

@dan Könnten Sie bitte etwas näher erläutern? Ich bin ein Anfänger, also wäre es toll, wenn ich wissen könnte, was "richtig angeschlossen" bedeutet :) Danke! –

+0

können Sie einen Ausnahme-Breakpoint hinzufügen? – Shubhank

Antwort

0
  • Es kann sein, dass man dieses UIWebViews Null ist. Aus diesem Grund haben Sie den Fehler 'Schwerwiegender Fehler: unerwartet wurde beim Entpacken eines optionalen Werts Null gefunden.' Beweis, dass Sie alle Ihre IBOutlets mit webViews im Storyboard verbunden haben (ich denke, dan bedeutet es). Und eine Möglichkeit, ändern Sie Ihren Code:

    @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 
        } 
    } 
    
    • und so weiter für jede webview
1

möglich, das Problem ist, dass Sie webview Null sein kann.

Um dies schnell zu überprüfen, müssen Sie das assistant editor (wo Sie eine geteilte Ansicht sehen können) verwenden, um Ihr Storyboard auf einer Seite und den Code auf der anderen Seite anzuzeigen.

Auf diese Weise können Sie überprüfen, ob die @IBOutlet korrekt gebunden ist. Durch die Positionierung der Maus über das Band links von jedem Ihrer Web-Ansichten, wird es an die Highlight-Element gebunden ist:

enter image description here

Wenn Ihre Variable nicht gebunden ist, können Sie einen leeren Kreis stattdessen ein absolutes voller Kreis.

Sie überprüfen zuerst, ob die Elemente korrekt gebunden sind.

Verwandte Themen