我在这里搜索SO的大部分内容都证明是徒劳的。我的守卫声明可以检查每个值,如果一个是零则更正它。但是,如果其中两个值为nil,那么在展开可选项时,我意外地发现了nil。如何使用swifts guard语句检查多个值是否为零?
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
}
}
也许我完全走错了路,任何一个例子的帮助都会受到赞赏。我已经阅读了所有可以接受的内容。我不需要比较两个值或进行一些复杂的比较。
答案 0 :(得分:1)
Guard声明在这里使用是不正确的。如果其中任何一个失败,那么您将从该函数返回,您的后续语句将不会被执行。因此,如果myAmount中没有有效值,那么您永远不会更正myRate和myFee。
if Double(myAmount.text ?? "") == nil {
myAmount.text = "0.00"
}
这种模式更适合你:
??
是nil合并运算符,它将使用文本值,或者在本例中为空字符串< / LI>