Ios 在Swift中,假意味着真
有没有人遇到过类似我下图所示的情况 我有一个变量Ios 在Swift中,假意味着真,ios,xcode,swift,boolean,Ios,Xcode,Swift,Boolean,有没有人遇到过类似我下图所示的情况 我有一个变量landingBools.didSlowPast40Knots,它(从调试打印输出中可以看到)为false,但由于某些原因,if语句的计算结果为true 知道为什么会这样吗?或者它只是一个随机错误 看起来我没有指定类型。。。我会试着做:布尔 struct LandingBOOLs { var didDepart : Bool = false var didLand : Bool = false var didSpeedO
landingBools.didSlowPast40Knots
,它(从调试打印输出中可以看到)为false,但由于某些原因,if语句的计算结果为true
知道为什么会这样吗?或者它只是一个随机错误
看起来我没有指定类型。。。我会试着做:布尔
struct LandingBOOLs {
var didDepart : Bool = false
var didLand : Bool = false
var didSpeedOver40Knots : Bool = false
var didSlowPast40Knots : Bool = false
func isLanded() -> Bool {
return didDepart & didLand & didSpeedOver40Knots & didSlowPast40Knots
}
}
后续行动
我将代码更改为:
if (lastPhase == .Descend && phaseOfFlightString == .LevelFlight) {
if (landingBools.didDepart) {
if (landingBools.didSlowPast40Knots) {
let landed = landingBools.didLand
if (landed) {
NSNotificationCenter.defaultCenter().postNotificationName("LANDED", object: self)
}
}
}
}
我现在很困惑,因为我的功能是:
func isLanded() -> Bool {
return didDepart & didLand & didSpeedOver40Knots & didSlowPast40Knots
}
所以我们不应该让它算出一个布尔值而不给它赋值128?我是否需要做&&而不是&?一个干净的构建似乎可以解决所有问题。您的
didSlowPast40Knots
是一个NSNumber
,值为false(相当于ObjC中的@NO
),还是标量类型为bool
?还有-你的财产声明是什么样子的?你能在if检查之前记录landingBools.didSlowPast40Knots的值,并在if中记录另一个值,在值的最后一个日志中添加else case吗。我相信这是真的,但是控制台的日志不能显示最新的值。您还可以通过添加==true来更改条件;我在Swift上看到了一些奇怪的结果。尝试一些println
s或NSLog
s来确认。(另外,尝试清理和重建您的项目;我认为调试符号/源代码可能与实际代码不同步…)我将使用清理和更多打印输出更新代码,然后我将回到这里。回答您的最新问题,是的,您应该在您的声明中使用&
,在这种情况下是不合适的。酷。我猜在某个时候,构建系统被搞糊涂了,你运行的代码与你所说的源代码不同。在那个阶段,生活会变得非常混乱。