2010-03-31 105 views
1

我的問題是,if語句不工作。第一行代碼的變量包含值「(空)」後,因爲誰從他的iPhone地址簿中選擇了接觸用戶不設置此聯繫人的國家重點,到目前爲止,一切順利。檢查,如果(國家== @「(空)」不工作

,但如果我檢查變量,它不會是真實的,但價值肯定是「(空)」 ...沒有一個人有一個想法?

NSString *country = [NSString [the dict objectForKey:(NSString *)kABPersonAddressCountryKey]]; 

if(country == @"(null)") 
{ 
     country = @""; 
} 

在此先感謝
肖恩

回答

5

正確的表達應該是:

if (country == nil) 

可以進一步簡化爲:

if (!country) 

如果你真的想測試與@"(null)"字符串相等,你應該使用isEqual:方法或isEqualToString:

if ([country isEqualToString:@"(null)"]) 

當使用==運算符進行比較時,您是co mparing對象的地址,而不是它們的內容:

NSString *foo1 = [NSString stringWithString:@"foo"]; 
NSString *foo2 = [NSString stringWithString:@"foo"]; 
NSAssert(foo1 != foo2, @"The addresses are different."); 
NSAssert([foo1 isEqual:foo2], @"But the contents are same."); 
NSAssert([foo1 isEqualToString:foo2], @"True again, faster than isEqual:."); 
+0

我已經試過了,它不與零工作。因爲如果我將這個變量設置爲文本字段,該文本字段會顯示「空」,並像你想象的 – Sean 2010-03-31 15:36:50

+0

感謝zoul,與isEqualToString它的工作原理就不會是空的。我從來沒有在==,isEqualToString或比較之間做出區別......這些比較方法之間的區別究竟是什麼? – Sean 2010-03-31 15:46:19

+0

噢,非常感謝這個簡短的解釋。 – Sean 2010-03-31 15:48:14

-2

這是一個偉大的答案,我不知道有檢查零或空字符串的所有這些不同的方式。