初学者Swift 3数据验证

初学者Swift 3数据验证,swift,validation,Swift,Validation,Swift newbie正在尝试设置数据验证函数,但我的代码生成以下错误:“二进制运算符'>'不能应用于两个'Double'操作数” 我被难倒了,希望能得到任何帮助 谢谢 Nas因为当您将字符串转换为双精度类型时,它会返回可选值,所以它可能是零或不是。这就是为什么无法与精确值进行比较。这样试试 func validateDouble(text: String) -> Bool { var result = false // test input to see if it

Swift newbie正在尝试设置数据验证函数,但我的代码生成以下错误:“二进制运算符'>'不能应用于两个'Double'操作数”

我被难倒了,希望能得到任何帮助

谢谢


Nas

因为当您将字符串转换为双精度类型时,它会返回可选值,所以它可能是零或不是。这就是为什么无法与精确值进行比较。这样试试

func validateDouble(text: String) -> Bool {
    var result = false

    // test input to see if it is a positive Double once text is converted
    if let doubleValue = Double(text) {
      if doubleValue > 0.0 {
        result = true
      }
   }   
}

因为当您将字符串转换为双精度类型时,它会返回可选值,所以它可能是零或不是。这就是为什么无法与精确值进行比较。这样试试

func validateDouble(text: String) -> Bool {
    var result = false

    // test input to see if it is a positive Double once text is converted
    if let doubleValue = Double(text) {
      if doubleValue > 0.0 {
        result = true
      }
   }   
}

您需要检查并确保转换后的值不是nil,这应该可以做到:

func validateDouble(text: String) -> Bool {

    // test input to see if it is a positive Double once text is converted
    guard let value = Double(text), value > 0.0 else { return false }
    return true

}

您需要检查并确保转换后的值不是nil,这应该可以做到:

func validateDouble(text: String) -> Bool {

    // test input to see if it is a positive Double once text is converted
    guard let value = Double(text), value > 0.0 else { return false }
    return true

}
试试这个

if let doubleValue = Double(text), doubleValue > 0.0 {
  result = true
}
试试这个

if let doubleValue = Double(text), doubleValue > 0.0 {
  result = true
}

哇——感谢你的快速回答!!!我打算稍后处理零的可能性,但我发现在swift中延迟处理零不是一个可行的策略。非常感谢您,您的回答非常完美@Nas欢迎您,您说过您是swift的新手,这就是为什么我用长途跋涉详细阐述这个答案,否则也可以用短途跋涉。如果你想know@Jaydeep,还可以使用where子句(即使用“,”)修改if条件,这类似于更快速的功能。例如(如果让doubleValue=Double(文本),doubleValue>0.0{})哇——感谢您的快速回答!!!我打算稍后处理零的可能性,但我发现在swift中延迟处理零不是一个可行的策略。非常感谢您,您的回答非常完美@Nas欢迎您,您说过您是swift的新手,这就是为什么我用长途跋涉详细阐述这个答案,否则也可以用短途跋涉。如果你想know@Jaydeep,还可以使用where子句(即使用“,”)修改if条件,这类似于更快速的功能。例如(如果让doubleValue=Double(文本),doubleValue>0.0{})