Установка делегата = сам вызывает поток 1: exc_bad_instruction (код =exc_i386_invop подкод =0x0)

Я следовал руководству Apple по началу работы со Swift здесь: https://developer.apple.com/library/ios/referencelibrary/GettingStarted/DevelopiOSAppsSwift/Lesson3.html

Я делаю почти то же самое, но по какой-то причине articleLink.delegate = self дает мне

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

а также

fatal error: unexpectedly found nil while unwrapping an Optional value

Я действительно не понимаю, почему это происходит, потому что я буквально шаг за шагом следую руководству Apple для этой части...

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) {
    }
}

1 ответ

articleLink является неявно развернутым необязательным UITextField, вы указываете компилятору, что он никогда не будет равен нулю. articleLink.delegate = пытается получить доступ к этому свойству, чтобы установить его делегат, и обнаруживает ноль необязательного, что вы обещали никогда не произойдет.

Поскольку это свойство является IBOutlet Похоже, вам не удалось подключить представление к этой розетке при настройке файла пера. Если бы вы сделали это, то свойство было бы установлено раньше viewDidLoad называется.

Другие вопросы по тегам