Установка делегата = сам вызывает поток 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
называется.