2012-08-04 41 views
0

我剛剛完成了使用AVFoundation的斯坦福大學iPhone課程。這是TA讓我們製作一個顯示視頻的應用程序,然後用面部識別在臉上戴上太陽鏡。所以我想連接幾個開關和滑塊來做不同的事情。第一個是改變色調過濾器值的滑塊。然後,我想要切換顯示太陽鏡或不太。但開關不會關閉太陽鏡。儘管交換機工作。我聲明在屬性與如何在Xcode 4.3中成功使用BOOL

@property (nonatomic) BOOL sunGlasses; 

一個BOOL I合成,然後該方法下鉤在交換機最多以下動作

- (IBAction)toggleGlasses:(id)sender 
{ 
if (_mySwitch.on) 
{ 
    NSLog(@"toggle is on"); 
    self.sunGlasses = YES; 
}else { 
    NSLog(@"toggle is off"); 
    self.sunGlasses = NO; 
} 
} 

然後,對於 - (無效)captureOutput,即其中色調得到改變和麪部識別是我添加到臉部識別部

if ((faceFound) && (self.sunGlasses = YES)){ 
    [self.glasses setHidden:NO]; 
}else{ 
    [self.glasses setHidden:YES]; 
} 

它曾經是隻是如果(faceFound),然後藏在眼鏡或顯示它們。但是,如果將開關切換到關閉狀態,則不會使眼鏡消失。

+1

除了通過分配平等檢查(您使用=代替==) ,你不應該檢查BOOL值是否。它不是一個真正的布爾類型,並且可以有很多不同的值(實際上是256)。你會做得更好,寫作該語句爲「if(faceFound && self.sunFlasses){」 – 2012-08-04 20:26:52

+0

@Jody Hagins,感謝您的快速回復。你是否想在右括號之後加上一個括號?我應該檢查布爾對零和一個而不是真實和錯誤?再次感謝。 – Douglas 2012-08-04 20:51:37

+0

我只是因爲那是我指示要替換的那一行而包含了花括號,並且它在原始行中。不,不要再檢查bools是否有明確的價值。任何非零值將爲「true」,且0將爲「false」。不幸的是,有很多代碼(包括蘋果示例代碼)明確檢查是和否。 NO不是那麼糟糕,因爲false只有0. – 2012-08-04 21:11:00

回答

4

您使用:

self.sunGlasses = YES 

單=是賦值。它設置該屬性的值,並且在更大的表達式中使用此語句時,它的值爲YES。因此,「如果」條件總是如此,顯示太陽鏡的分支總是被採用。

使用double equals ==來測試是否相等。

+0

感謝您的信息。我仍然離開自己。?因爲然後我得到了一個警告,說「平等比較結果未被使用」。我還在面找到的部分將=改爲了==。有關於此的任何想法?非常感謝您花時間幫助新手! – Douglas 2012-08-04 20:48:14

+0

我明白了。我使用了你的==建議和Jody的建議,並且一切按計劃進行。我有很多東西需要學習,但是感謝這個網站上的人們,我開始取得一些進展!再次感謝。 – Douglas 2012-08-04 23:21:40

+0

請看上面,我忘了把你的名字放在上面! – Douglas 2012-08-04 23:28:14

-1

您可以使用

如果(self.sunGlasses){

}

驗證

+1

你可以修復你的代碼格式並完成你的句子嗎? – skrrgwasme 2014-09-30 15:50:28