2016-03-21 12 views
0

Ich verfolge das Apple-Tutorial hier mit Swift den ersten Schritten: https://developer.apple.com/library/ios/referencelibrary/GettingStarted/DevelopiOSAppsSwift/Lesson3.html#//apple_ref/doc/uid/TP40015214-CH22-SW1Einstellung Delegat = Selbst verursacht Thread 1: exc_bad_instruction (code = exc_i386_invop Subcode = 0x0)

Ich mache fast das Gleiche, aber für einige Grund articleLink.delegate = self gibt mir

Thread 1: exc_bad_instruction (code=exc_i386_invop subcode=0x0)

und

fatal error: unexpectedly found nil while unwrapping an Optional value

Ich bin wirklich verwirrt darüber, warum dies geschieht, weil ich buchstäblich das Apple-Tutorial Schritt für Schritt für diesen Teil folgende bin ...

import UIKit 
import Alamofire 

class ViewController: UIViewController, UITextFieldDelegate { 
    // MARK: Properties 
    @IBOutlet weak var articleLink: UITextField! 

    override func viewDidLoad() { 
     super.viewDidLoad() 

     // Handle the text field's user input through delegate callbacks 
     articleLink.delegate = self // ERROR OCCURS HERE 
    } 

    override func didReceiveMemoryWarning() { 
     super.didReceiveMemoryWarning() 
     // Dispose of any resources that can be recreated. 
    } 

    // MARK: UITextFieldDelegate 
    func textFieldShouldReturn(textField: UITextField) -> Bool { 
     // Hide keyboard 
     textField.resignFirstResponder() 
     return true 
    } 

    // MARK: Actions 

    @IBAction func submitLink(sender: AnyObject) { 
    } 
} 

Antwort

2

articleLink eine implizit ungeöffneten optional UITextField ist, weisen Sie den Compiler dass es nie Null sein wird. articleLink.delegate = versucht, auf diese Eigenschaft zuzugreifen, um ihren Delegaten festzulegen, und trifft auf eine NULL-Option, was nie versprochen wurde.

Da diese Eigenschaft eine IBOutlet ist, klingt es so, als ob Sie beim Konfigurieren einer NIB-Datei keine Verbindung zu dieser Steckdose herstellen konnten. Wenn Sie dies getan hätten, wäre die Eigenschaft gesetzt worden, bevor viewDidLoad aufgerufen wird.

+0

Danke! Ich bin neu in Swift. Wie soll ich das beheben? – user6091470

+0

Es hört sich so an, als ob Sie in diesem Tutorial entweder einen Teil von Schritt 8 übersprungen oder nach dem Erstellen der Steckdose, die die Verbindung abgebrochen hat, eine Änderung vorgenommen haben. Sie müssen überprüfen, ob die Ansicht in Ihrer nib immer noch mit dieser Steckdose verbunden ist. Es gibt ein Beispiel dafür, wo Sie das im Interface Builder finden können: https://developer.apple.com/library/ios/recipes/xcode_help- IB_connections/chapters/Connections.html # // Apple_ref/doc/uid/TP40014227-CH20-SW1 – Jonah