2011-03-23 86 views
0

嗨我有一個問題,我想測試如果我的字符串不是空的,不等於string1我想做的事情,但它不工作。簡單的布爾測試不工作

我的代碼:

NSUserDefaults *namePrefs = [NSUserDefaults standardUserDefaults]; 
NSString *savedName = [namePrefs stringForKey:@"myKey"]; 

if ((savedName != nil)&&([savedName isEqualToString:@"string1"])){ // 

     [self myFunction]; 

    } 

它不進入時savedName是零它是確定

它進入時,它的價值不是零,而不是STRING1它也行

但它在savedName爲string1時進入,爲什麼?

感謝您的幫助再見

回答

2

是的,它會進入,如果savedname =字符串1 那麼它會因爲它satifing烏爾conditon塊中的輸入。

savedname!=零真正

savedname ==字符串1真

那麼爲什麼不是在塊進入。它會進入bcoz它滿足你的條件。

+0

對不起(![savedName isEqualToString:@「string1」])我忘了「!」 – Csabi 2011-03-23 07:50:44

4

因爲你告訴它這裏:

if ((savedName != nil)&&([savedName isEqualToString:@"string1"])){ 

變化:

if ((savedName != nil)&&(![savedName isEqualToString:@"string1"])){ // 
5

你只是錯過了「不」,在有條件的:

(savedName != nil) && ([savedName isEqualToString:@"string1"]) 

這將當savedName不是nil並且等於給定的字符串時爲真。你想這個代替:

(savedName != nil) && (![savedName isEqualToString:@"string1"]) 

另外請注意,您可以刪除的第一部分,因爲發送到nil對象的消息返回NO

![nil isEqualToString:@"string1"] ≈ !NO ≈ YES 

因此,nil串從@"string1"認爲是不同的。聽起來合乎邏輯。