Ios 如何在Xcode 4.3中成功使用BOOL

Ios 如何在Xcode 4.3中成功使用BOOL,ios,xcode,boolean,avfoundation,Ios,Xcode,Boolean,Avfoundation,我刚刚完成了斯坦福大学使用AVFoundation的iPhone课程。助教让我们制作了一个显示视频的应用程序,然后在脸上戴上太阳镜进行人脸识别。所以我想连接一些开关和滑块来做不同的事情。第一个是更改色调过滤器值的滑块。然后我想换一个位置,看看有没有太阳镜。但是这个开关并不能关闭太阳镜。尽管开关能工作。我在属性中声明了BOOL @property (nonatomic) BOOL sunGlasses; 我合成了它,然后将开关连接到下面的动作 - (IBAction)toggleGlasse

我刚刚完成了斯坦福大学使用AVFoundation的iPhone课程。助教让我们制作了一个显示视频的应用程序,然后在脸上戴上太阳镜进行人脸识别。所以我想连接一些开关和滑块来做不同的事情。第一个是更改色调过滤器值的滑块。然后我想换一个位置,看看有没有太阳镜。但是这个开关并不能关闭太阳镜。尽管开关能工作。我在属性中声明了BOOL

@property (nonatomic) BOOL sunGlasses;  
我合成了它,然后将开关连接到下面的动作

- (IBAction)toggleGlasses:(id)sender 
{
if (_mySwitch.on)
{
    NSLog(@"toggle is on");
    self.sunGlasses = YES;
}else {
    NSLog(@"toggle is off");
    self.sunGlasses = NO;
}
}
然后在-(void)captureOutput的方法下,也就是说色调发生变化,并且面部识别被添加到面部识别部分

if ((faceFound) && (self.sunGlasses = YES)){
    [self.glasses setHidden:NO];
}else{
    [self.glasses setHidden:YES];
}
过去只是如果(找到了脸)然后把眼镜藏起来或给他们看。但是,如果将开关切换到off,这不会使眼镜消失。

您使用的:

self.sunGlasses = YES
单=是一个赋值。它设置该属性的值,当在较大的表达式中使用该语句时,其值为YES。所以“如果”条件始终为真,并且显示太阳镜的分支始终为真

使用double equals==测试相等性

您使用了:

self.sunGlasses = YES
单=是一个赋值。它设置该属性的值,当在较大的表达式中使用该语句时,其值为YES。所以“如果”条件始终为真,并且显示太阳镜的分支始终为真

使用double equals==测试相等性

您可以使用

if(自行式太阳镜){

}

要验证

,您可以使用

if(自行式太阳镜){

}



要验证

,除了通过赋值(使用=而不是==)检查相等性外,不应根据是检查布尔值。它不是真正的布尔类型,可以有很多不同的值(实际上是256)。您最好将该语句写成“if(facefind&&self.sunFlasses){”@乔迪·哈金斯,谢谢你的快速回复。你的意思是在右括号后放一个括号吗?我是否应该检查布尔值是否为0和1,而不是os true和false?再次感谢。我之所以包括花括号,是因为我指示要替换的那一行,它在原始行中。不,不要再检查布尔值了xplicit值。任何非零值都将是“true”,0将是“false”。不幸的是,有很多代码(包括apple示例代码)它显式地检查是和否。否并不是那么糟糕,因为false只有0。@JodyHagins,非常感谢您的帮助。我找到了它。请看下面。再次感谢!!您甚至不需要BOOL属性,只需使用开关中的一个。您只需将您使用的显式是/否(而不是您发布的代码)替换为
[self.glasses setHidden:!\u mySwitch.on];
除了通过赋值(使用=而不是==)检查相等性之外,您不应该根据YES检查BOOL值。它不是真正的布尔类型,可以有很多不同的值(事实上是256)。您最好将该语句写成“if(facefind&&self.sunflass){”@乔迪·哈金斯,谢谢你的快速回复。你的意思是在右括号后放一个括号吗?我是否应该检查布尔值是否为0和1,而不是os true和false?再次感谢。我之所以包括花括号,是因为我指示要替换的那一行,它在原始行中。不,不要再检查布尔值了xplicit值。任何非零值都将是“true”,0将是“false”。不幸的是,有很多代码(包括apple示例代码)它显式地检查是和否。否并不是那么糟糕,因为false只有0。@JodyHagins,非常感谢您的帮助。我找到了它。请看下面。再次感谢!!您甚至不需要BOOL属性,只需使用开关中的一个。您只需将您使用的显式是/否(而不是您发布的代码)替换为
[self.glasses setHidden:!\u mySwitch.on];
感谢您提供的信息。我是否仍保留该self。?因为我收到一条警告,上面写着“未使用相等比较结果”.我还将面部搜索部分中的=改为a==有什么想法吗?非常感谢你花时间帮助一位新手!我找到了答案。我使用了你的==建议和Jody的if建议,一切都按计划进行了。我有很多东西要学,但多亏了这个网站上的人,我开始取得一些进展了!!!再次感谢你。恳求如上所述,我忘记在上面写上你的名字了!谢谢你提供的信息。我还留下自己吗?因为我收到了一条警告,上面写着“平等比较结果未使用”.我还将面部搜索部分中的=改为a==有什么想法吗?非常感谢你花时间帮助一位新手!我找到了答案。我使用了你的==建议和Jody的if建议,一切都按计划进行了。我有很多东西要学,但多亏了这个网站上的人,我开始取得一些进展了!!!再次感谢你。恳求请看上面,我忘了把你的名字写在上面!你能修改你的代码格式并完成你的句子吗?你能修改你的代码格式并完成你的句子吗?