2013-05-17 71 views
0

這是怎麼發生的?使用代碼...UITextField和UILabel的奇怪比較

- (IBAction)dismissKeyboard:(id)sender { 
    if(textField.text == label.text) { 
     NSLog(@"Correct!"); 
    } 
    else { 
     NSLog(@"Error?"); 
     NSLog(textField.text); 
     NSLog(label.text); 
    } 
} 

聲明evaulates是假的,並打印...

Error?

Word 
Word 

的話是一樣的,但如果語句失敗...爲什麼是這樣?我不知道爲什麼會出現這種情況,如果它打印的是完全相同的單詞,但聲明將它們比作假?

這是我在做錯誤的if語句?請幫忙。先謝謝你。

回答

1

NSString是一類。查看兩個NSString對象(或任何類別的對象)是否具有相同值的正確方法是使用isEqual:。在NSString的情況下,您可以使用isEqualToString:

if ([textField.text isEqualToString:label.text]) { 
} 
+0

謝謝......我想這是做這件事的方法,但我不知道Objective C方法。我會盡可能接受。 –

+0

什麼代表?這行代碼中沒有涉及委託。你的意思是「方法」嗎? 'isEqualToString:'是一個「方法」,而不是一個委託。 – rmaddy

+0

這就是我的意思,可憐的字選擇。沒在想。 –

1

符號==比較內存位置。它看你是否指的是同一個對象。

應使用「isEqualToString:」方法比較變量內的字符串值。