我在 SO 上的大部分搜索都被证明是徒劳的。我的 guard 语句会检查每个值并在一个为零时更正它。但是,如果其中两个值是 nil,那么我在解包可选时意外地发现 nil 会崩溃。如何使用 swifts guard 语句检查多个值不为 nil?
func protectInput() {
guard Double(myAmount.text!) != nil else {
myAmount.text = "0.00"
return
}
guard Double(myRate.text!) != nil else {
myRate.text = "0.00"
return
}
guard Double(myFee.text!) != nil else {
myFee.text = "0.00"
return
}
}
也许我完全走错了路,任何有关示例的帮助将不胜感激。我已经阅读了所有我能接受的内容。我不需要比较两个值或进行一些复杂的比较。
最佳答案
Guard 语句不适合在这里使用。如果它们中的任何一个失败,那么您将从该函数返回并且您后面的语句将不会被执行。因此,如果 myAmount 中没有有效值,您将永远不会更正 myRate 和 myFee。
if Double(myAmount.text ?? "") == nil {
myAmount.text = "0.00"
}
这种模式更适合你:
- 文本值不再强制展开,这将防止潜在的崩溃 -
??
是 nil 合并运算符,它将使用文本值,或者在本例中为空字符串 - 没有返回值,因此该函数将检查所有值。
关于ios - 使用 swifts guard 语句进行多值检查?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39314117/