Float if语句返回错误||在迅速

时间:2015-02-01 17:56:24

标签: swift if-statement xcode6

所以这是我的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)'

ValueVars是浮点数。 DAGNViewControllerInstance是此UIViewController子类的实例:

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.
}


}

Value IBOutlets链接到UITextFields。 if语句位于另一个UIViewController子类中,该子类是故事板中UIView的自定义类,它具有我想要显示错误消息的标签。

有谁知道我为什么会收到错误,以及如何修复错误?

1 个答案:

答案 0 :(得分:1)

问题可能在于操作符应用程序的顺序,以及数字文字的模糊性(可能是浮点数,双精度数,整数等)。例如,在更简单的情况下:

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")
}