Float if 语句 returns 错误与 ||在 swift

Float if statement returns error with || in swift

所以这是我的 if 语句:

if !DAGNViewControllerInstance.DValueVar<=5 || !DAGNViewControllerInstance.DValueVar>=1 || !DAGNViewControllerInstance.AValueVar<=6 || !DAGNViewControllerInstance.AValueVar>=2 || !DAGNViewControllerInstance.GValueVar<=3 || !DAGNViewControllerInstance.GValueVar>=2 || !DAGNViewControllerInstance.NValueVar<=3 || !DAGNViewControllerInstance.NValueVar>=1 || !DAGNViewControllerInstance.TValueVar<=9999 || !DAGNViewControllerInstance.TValueVar>=1 {

        self.ErrorField.text = "One or more values are not in range!"
        }

此 if 语句检查变量以查看它是否在范围内。但是每当我尝试构建代码时,我都会从这个 if 语句中得到一个错误。

Swift Compiler Error Cannot Invoke '||' with an argument list of type '($T88, $T96)'

ValueVar 是浮点数。 DAGNViewControllerInstance 是这个 UIViewController subclass:

的一个实例
import UIKit
extension String {
var floatValue: Float {
    return (self as NSString).floatValue
}
}
class DAGNViewController: UIViewController {
@IBOutlet weak var DValue: UITextField!
@IBOutlet weak var AValue: UITextField!
@IBOutlet weak var GValue: UITextField!
@IBOutlet weak var NValue: UITextField!
@IBOutlet weak var TValue: UITextField!
var DValueVar: Float = Float()
var AValueVar: Float = Float()
var GValueVar: Float = Float()
var NValueVar: Float = Float()
var TValueVar: Float = Float()

@IBAction func GOButtonPressed(sender: UIButton) {
    DValueVar = DValue.text.floatValue
    AValueVar = AValue.text.floatValue
    GValueVar = GValue.text.floatValue
    NValueVar = NValue.text.floatValue
    TValueVar = NValue.text.floatValue
}
override func viewDidLoad() {
    super.viewDidLoad()
    // Do any additional setup after loading the view, typically from a nib.

}

override func didReceiveMemoryWarning() {
    super.didReceiveMemoryWarning()
    // Dispose of any resources that can be recreated.
}


}

值 IBOutlets 链接到 UITextFields。 if 语句在另一个 UIViewController subclass 中,它是故事板中 UIView 的自定义 class,它有一个我想显示错误消息的标签。

有谁知道我为什么会收到这个错误,或者如何解决它?

问题可能在于运算符应用的顺序,以及数字文字(可能是浮点数、双精度数、整数等)的歧义。例如,在更简单的情况下:

let d = 12.3
let e = 45.6

// error: cannot invoke '>=' with an argument list of type '($T6, $T12)'
if !d>=3 || !e>=4  { }

// compiles without error
if !(d>3) || !(e>=4) { }

尝试将括号应用于各种表达式,应该可以解决问题。

P.S。你可能想看看使用间隔来简化这个:

let d = 6.5
if !(1...5).contains(d) {
    println("d not within range")
}