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