Ios 致命错误:在Swift中展开可选值时意外发现nil

Ios 致命错误:在Swift中展开可选值时意外发现nil,ios,xcode,swift,iboutlet,Ios,Xcode,Swift,Iboutlet,因此,我试图在Swift中获取输入字段的文本。这就是我得到的 class ViewController: UIViewController { @IBOutlet var passwordField: UITextField! @IBOutlet var usernameField: UITextField! override func viewDidLoad() { super.viewDidLoad() //

因此,我试图在Swift中获取输入字段的文本。这就是我得到的

class ViewController: UIViewController {

    @IBOutlet var passwordField: UITextField!
    @IBOutlet var usernameField: UITextField!

    override func viewDidLoad() {
        super.viewDidLoad()            
        //Try to log user in by default
        let user = usernameField.text
        let password = passwordField.text
这一切看起来都很好(我知道我没有关闭课程,我只是直接把它拉了出来),当我去运行它时,我得到了它

致命错误:在展开可选值时意外发现nil (lldb)

(您必须在新选项卡中打开图像才能看到它)


我知道,我成功地用IBOutlet绑定了输入字段。有什么想法吗

试着这样做,我想这会管用的:

if let abc = usernameField.text{
        let user = abc

    }

我认为您必须在TextField的委托方法中检查此项

func textFieldDidEndEditing(textField: UITextField) {

}
取而代之的是查看加载或按按钮单击


原因文本字段在ViewDidLoad上为空

我在将委托设置为文本字段时遇到了这个问题。无法找出错误,然后意识到我已将第二个视图控制器的类声明为视图控制器而不是UIViewController。这方面我是新手。

问题似乎是,在您尝试访问usernameField时,它是零,因此尝试访问.text失败。我个人觉得这很奇怪,因为它似乎应该在调用viewDidLoad时分配。(除非字段实际上不在视图中)。在任何情况下,请使用条件展开以避免错误。作为旁注,为什么要检查viewDidLoad开头的值?在这一点上,它们似乎不太可能有任何文本。