致命错误:意外地发现零,而在SWIFT中展开一个可选值

问题描述:

所以我想要在Swift中获取输入字段的文本。因此,这里是我得到的致命错误:意外地发现零,而在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 

这一切看起来不错(我知道我没有关闭类的,我只是把它直接退出),当我去运行它,我得到

fatal error: unexpectedly found nil while unwrapping an Optional value (lldb)

You'll have to open the image in a new tab to see it

(你必须在新标签打开的图像,看它)

我用IBOutlet成功绑定了输入字段,我知道这一点。有任何想法吗?

+1

问题似乎是,您尝试访问它时,usernameField为零,因此尝试访问.text失败。我个人觉得这很令人惊讶,因为它似乎应该在调用viewDidLoad的时候分配。 (除非这些字段实际上不在视图中)。无论如何,使用条件解包来避免错误。作为一个附注,为什么你在viewDidLoad的开头检查值?在这一点上,他们似乎不可能有任何文字。 – dustincarr 2014-11-02 20:22:34

试试这个方式,我认为这会工作:

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

    } 

我想你已经在文本域的委托方法

func textFieldDidEndEditing(textField: UITextField) { 

} 

而不是viewDidLoad中或的行动ButtonClick

检查这

原因TextField在Vi上为空ewDidLoad!

我在将委托设置为文本字段时遇到此问题。无法弄清楚是错误的,然后意识到我已经声明了第二个视图控制器的类作为视图控制器而不是UIViewController。我是新来的。