Swift 如何使此代码不包含nil值?

Swift 如何使此代码不包含nil值?,swift,Swift,获取此错误: “致命错误:在展开可选值时意外发现nil” 错误出现在if语句的第一行 我检查了所有的变量,看看哪个值是可选的,但没有任何结果。基本上,我希望文本字段在单击时变为红色,而字段中没有任何内容。运行此代码时,我遇到此错误: @IBOutlet weak var textEvent: UITextField! @IBAction func addButtonAction(_ sender: Any) { userData = true UserDefaults.stan

获取此错误:

“致命错误:在展开可选值时意外发现nil”

错误出现在
if
语句的第一行

我检查了所有的变量,看看哪个值是可选的,但没有任何结果。基本上,我希望文本字段在单击时变为红色,而字段中没有任何内容。运行此代码时,我遇到此错误:

@IBOutlet weak var textEvent: UITextField!

@IBAction func addButtonAction(_ sender: Any) {
    userData = true
    UserDefaults.standard.set(userData, forKey: "userData")

    if textEvent.text == "" {  
        textEvent.backgroundColor = UIColor.red
    } else {
        textEvent.backgroundColor = UIColor.white
        event.append(textEvent.text!)
       // UserDefaults.standard.set(event, forKey: "theEvent")
    }
}

@IBAction func doneButton(_ sender: Any) {
    dismiss(animated: true, completion: nil)
}
试一试

不过,如果你真的想变得花哨,你也可以做选项绑定

if let myTextEvent = textEvent {  
           ...(do whatever you need to do, but use myTextEven instead of textEvent inside this if statement)
        }

问题似乎出在你身上

@IBOutlet weak var textEvent: UITextField!
确保从笔尖正确设置插座

以下是帮助您连接违规门店的指南:

这个textEvent变量是什么?它的定义是什么?如果它是一个插座,你有没有检查过它是否正确绑定在笔尖上?有几种方法可以找到有问题的线。也许最简单的方法就是找出你在哪里展开某个东西,只要你给了我们你所有的代码,它就只有一行了。(查找所有
)您只有一个-
textEvent.text。现在问题变得简单了——为什么是
nil
?可能是因为
textEvent
是?在该行上放置一个断点,并确定是否是这种情况。最后,请添加您要声明的
textEvent
-我打赌它是一个
@IBOutlet
,它要么(a)连接不正确,要么(b)声明为
,并以某种方式被释放。@CaioSym我刚刚将它添加到我代码的第一行。@dfd我刚刚添加了这一行。这是代码的第一行,所以您检查过它是否为
nil
?你搜索过类似于你的问题吗?有几个…错误可能是由于textEvent被声明为隐式展开的可选项。这种检查在这种情况下没有帮助。更糟糕的是,它没有解决实际问题——它只是隐藏了问题。
@IBOutlet weak var textEvent: UITextField!