所以这是我的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的自定义类,它具有我想要显示错误消息的标签。
有谁知道我为什么会收到错误,以及如何修复错误?
答案 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")
}