Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/100.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/mercurial/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 在Swift中,假意味着真_Ios_Xcode_Swift_Boolean - Fatal编程技术网

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来确认。(另外,尝试清理和重建您的项目;我认为调试符号/源代码可能与实际代码不同步…)我将使用清理和更多打印输出更新代码,然后我将回到这里。回答您的最新问题,是的,您应该在您的声明中使用
&
,在这种情况下是不合适的。酷。我猜在某个时候,构建系统被搞糊涂了,你运行的代码与你所说的源代码不同。在那个阶段,生活会变得非常混乱。