2012-04-07 43 views
-3

我有下面的代碼,我確定如果條件爲真,但我無法進入它。 我證明了通過使用NSLog寫入if語句前後的值和長度,兩者等於「test」和length = 4,任何人都可以解決我的問題?這些字符串爲什麼不相等?

請看下面的鏈接,這是我的帽子屏幕,請幫助,謝謝!

http://postimage.org/image/rvtxcq1g1/

NSLog(@"Before value=%@, lenght=%i", txtMaster.text, [txtMaster.text length]); 

if (txtMaster.text == @"test") 
{ 
    NSLog(@"%@\n", @"Success"); 
} 

NSLog(@"After value=%@, lenght=%i", txtMaster.text, [txtMaster.text length]); 
+0

請不要在你的問題標題中使用「SOS」。我已經編輯了你最近的兩個問題。 – 2012-04-07 16:33:10

回答

5

使用==比較NSString S中的字符串的指針值進行比較。這可能不是你想要的。相反,試試這個:

if([txtMaster.text isEqualToString:@"test"]) { 
    NSLog(@"Success!\n"); 
} 
+0

噢,我的天啊,非常感謝。 – user1302236 2012-04-07 07:08:22

1

也許你對指針的一些問題。

@「test」返回一個指針,顯示常量字符串在內存中的位置。

  • @「test」= 0xC0001。在0xC0001地址處,它是常量 string @「test」
  • txtMaster.text = 0xD3401。在0xD3401 ADRESS它是一個對象 (可能的NSString)

在極少數情況下@ 「測試」 和txtMaster.text相等(==)那麼這意味着

  • txtMaster.txt = @ 「測試」=相同的地址= 0xd32901,他們指向 相同的對象。

記住所有返回Objective-C對象的方法通常返回指向這些對象的指針。

我希望現在的霧離開..

相關問題