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