使用swifts guard语句进行多重值检查?

时间:2016-09-04 06:22:39

标签: ios swift

我在这里搜索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
    }
}

也许我完全走错了路,任何一个例子的帮助都会受到赞赏。我已经阅读了所有可以接受的内容。我不需要比较两个值或进行一些复杂的比较。

1 个答案:

答案 0 :(得分:1)

Guard声明在这里使用是不正确的。如果其中任何一个失败,那么您将从该函数返回,您的后续语句将不会被执行。因此,如果myAmount中没有有效值,那么您永远不会更正myRate和myFee。

if Double(myAmount.text ?? "") == nil {
    myAmount.text = "0.00"
} 

这种模式更适合你:

  • 文本值不再被强制解包,这将防止一次潜在的崩溃 - ??是nil合并运算符,它将使用文本值,或者在本例中为空字符串< / LI>
  • 没有返回,因此该函数将检查所有值。