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

标签 ios swift

我在 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/

相关文章:

ios - swift 4 : TimeInterval set to random number each time

ios - 如何在 Swift iOS (Xcode 6.0) 中以编程方式更改 WebView 高度

ios - 原子性质和用途

ios - 使用 CMake 的 Xcode 部署信息和图标

ios - 取消归档编码数据返回 nil 和不正确的格式

ios - 使用值(forKey : String) gives an error

ios - 运行时在 UIView 中创建控件?

ios - 如何让用户能够快速浏览一系列图像?

ios - 如何创建动态图像

ios - 使用反向动画将后退按钮位置从左栏按钮更改为右栏按钮