![](/img/trans.png)
[英]sqlite3_prepare_v2 statement is not SQLITE_OK and I don't know why
[英]if statement…I don't know why it's not triggering
condition is not being met to declare the winner. 出于某些奇怪的原因, 未满足条件的将宣布获胜者。 for the met condition. 我调试并跟踪了该条件的值,它为3个变量保留了值2,但不会触发满足条件的 。 我是想念流血的明显还是真的很累(是的...我很累)? 花了几个小时试图解决这个问题。 condition is met and executes it's statement...but for the life of me...the O does not. 满足条件并执行它的语句...但是对我而言,O不。
我尝试过{},而我没有尝试过{}。 我已经尝试了几乎所有内容...等等。
我只尝试了O值的条件,但没有用。 嗯 它不喜欢该死的2! 呵呵呵
-(void)chkWinner
{
NSLog(@"At the top of Check Winner method, player %d %d %d ", tl_Int, tm_Int, tr_Int);
if(tl_Int & tm_Int & tr_Int == 1)
{
NSLog(@" X is the WINNER %d %d %d", tl_Int, tm_Int, tr_Int);
}
else if(tl_Int & tm_Int & tr_Int == 2)
{
NSLog(@" O is the WINNER %d %d %d", tl_Int, tm_Int, tr_Int);
}
else
{
NSLog(@"In Check Winner method, player %d %d %d ", tl_Int, tm_Int, tr_Int);
}
}
这是被按下的按钮的代码。 它将值传递给方法...我只是不知道为什么它对一个值起作用而对另一个值不起作用。
-(IBAction) topLeftBtn:(id) sender
{
if(playerX.enabled == true)
{
tl_Int = 1;
NSLog(@" X %d ", tl_Int);
[tlBtn setImage:[UIImage imageNamed:@"X.png"] forState:UIControlStateNormal];
playerX.enabled = false;
tlBtn.enabled = false;
blockingBtn.enabled = true;
blockingBtn.hidden = false;
topLSquare.image = [UIImage imageNamed:nil];
SEL methodSelector1 = @selector(chkWinner);
[NSTimer scheduledTimerWithTimeInterval:0 target:self selector:methodSelector1 userInfo:nil repeats:NO];
}
if(playerO.enabled == true)
{
tl_Int = 2;
NSLog(@"TL O %d ", tl_Int);
[tlBtn setImage:[UIImage imageNamed:@"O.png"] forState:UIControlStateNormal];
playerO.enabled = false;
tlBtn.enabled = false;
blockingBtn.enabled = true;
blockingBtn.hidden = false;
topLSquare.image = [UIImage imageNamed:nil];
SEL methodSelector1 = @selector(chkWinner);
[NSTimer scheduledTimerWithTimeInterval:0 target:self selector:methodSelector1 userInfo:nil repeats:NO];
}
}
这甚至是输出窗口:
2013-07-25 00:43:08.167 [16079:c07] TR O 2
2013-07-25 00:43:08.170 [16079:c07] At the top of Check Winner method, player 0 0 2
2013-07-25 00:43:08.172 [16079:c07] In Check Winner method, player 0 0 2
2013-07-25 00:43:10.934 [16079:c07] TM O 2
2013-07-25 00:43:10.938 [16079:c07] At the top of Check Winner method, player 0 2 2
2013-07-25 00:43:10.939 [16079:c07] In Check Winner method, player 0 2 2
2013-07-25 00:43:14.444 [16079:c07] TL O 2
2013-07-25 00:43:14.447 [16079:c07] At the top of Check Winner method, player 2 2 2
2013-07-25 00:43:14.449 [16079:c07] In Check Winner method, player 2 2 2
值存在,但是没有NSLog输出显示满足条件...发出断点并进入调试,进入代码,并在满足条件时在NSLog上移动。 救命...
您应该尝试两件事。
第一种是将所有单'&'更改为双'&&'(假设您正在检查AND。
第二个是询问每个变量是否等于1,而不是将它们全部加在一起。
一个好的if语句如下所示:
if(tl_Int == 1 && tm_Int == 1 && tr_Int == 1)
尝试计算tl_Int&tm_Int&tr_Int并将其分配给temp变量,然后在if / elseif条件下使用它。 -没有进行测试,但是您可能想尝试一下
只需将所有单个“&”更改为双“ &&”即可解决您的问题。
根据您的条件,NSLog调用取决于tr_Int
的值,如果为1,则将调用第一个NSLog,如果为2,则将调用第二个NSLog,否则将调用第三个。
它只是检查tr_Int ==的条件
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.