Ios 致命错误:在Swift中展开可选值时意外发现nil
因此,我试图在Swift中获取输入字段的文本。这就是我得到的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() //
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开头的值?在这一点上,它们似乎不太可能有任何文本。