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语句的错误部分的主要内容,如果未能解决你的问题,请参考以下文章