Swift调试器出现访问if语句的错误部分

问题描述 投票:-4回答:1

我在跟踪以下代码时遇到问题:

print("%i", session.subsessions.count)    // prints 3
print("%i", self.iSessionNumber)          // prints 6
print("%i", self.sessions.count - 1)      // prints 6
if session.subsessions.count > 1 || self.iSessionNumber == self.sessions.count - 1
{
    // if called
}
else
{

} 

显然,如果应该调用条件。但奇怪的是,其他人正在被召唤。不知道为什么。

更新

之所以被称为阻塞的原因是因为它是空的。这导致了我的观察:if行的控制直接进入if条件的结尾而不执行if块中的代码。然后调试器再次来到if行和if块被调用。我仍然不理解调试器的行为,它再次执行if-else语句。

swift if-statement
1个回答
1
投票

使用括号可以使代码更易于阅读和更具可执行性。

if ((session.subsessions.count > 1) || (self.iSessionNumber ==
 (self.sessions.count - 1)))
{
// if called
}
else
{
// else called
}

此外,如果您还没有尝试过这种方式进行调试,请尝试拆分条件以查看失败的位置...

if (session.subsessions.count > 1) 
{
    print('passed condition 1')
}
else if self.iSessionNumber == (self.sessions.count - 1)
{
    print('failed condition 1, passed condition 2')
}else
{
    print('no conditions passed')
    print("%i", session.subsessions.count)    // check the numbers
    print("%i", self.iSessionNumber)          
    print("%i", self.sessions.count - 1)    
}

这应该告诉你它失败的地方以及如何解决它。检查您的代码以确保您没有动态更改这些值,并且它们在您的语句中仍然是相同的。

© www.soinside.com 2019 - 2024. All rights reserved.