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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Swift调试器出现访问if语句的错误部分相关的知识,希望对你有一定的参考价值。

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

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语句。

答案

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

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)    
}

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

以上是关于Swift调试器出现访问if语句的错误部分的主要内容,如果未能解决你的问题,请参考以下文章

为啥 Java 会出现“无法访问的语句”编译器错误?

Swift 中的单行 if 语句

Swift 良好的编码实践:可选类型 Bool 的 If 语句

在 JSP 中的 <% %> 代码片段中添加链接

关于if与else的错误使用

swift xcode 8 出现大量调试区域错误