【问题标题】:fatal error: unexpectedly found nil while unwrapping an Optional value in Swift致命错误:在 Swift 中展开可选值时意外发现 nil
【发布时间】:2014-11-02 17:07:05
【问题描述】:

所以我试图在 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 成功绑定,我知道。有任何想法吗?

【问题讨论】:

  • 问题似乎是 usernameField 在您尝试访问它时为零,因此尝试访问 .text 失败。我个人觉得这很令人惊讶,因为它似乎应该在调用 viewDidLoad 时分配。 (除非这些字段实际上不在视图中)。在任何情况下,使用条件展开来避免错误。附带说明一下,为什么要检查 viewDidLoad 开头的值?那时似乎不太可能有任何文字。

标签: ios xcode swift iboutlet


【解决方案1】:

试试这个方法,我认为这会奏效:

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

    }

【讨论】:

    【解决方案2】:

    我认为你必须在 TextField 的委托方法中检查这个

    func textFieldDidEndEditing(textField: UITextField) {
    
    }
    

    而不是 ViewDidLoad 或 ButtonClick

    的操作

    原因 TextField 在 ViewDidLoad 上为空!

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-11-30
        • 2015-03-04
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多