2014-09-04 47 views
-1

我有以下代碼:與IF語句奇怪的局面:

if (flag == 2 && username1 != username2 && password1 != password2) 
{ 
alert =[[UIAlertView alloc ] initWithTitle: @"INCORRECT... 

價值觀,我有:

標誌= 2,用戶名1 = @「AA「,密碼1 = @「AA「,用戶名2 = @ 「aa」,password2 = @「aa」

那麼上面的IF語句應該計算錯誤的權利?但由於我不知道的原因,IF語句後的陳述被執行!任何想法爲什麼?

感謝您的輸入。

+0

的IF語句中使用圓括號覆蓋運算符優先級規則 – Andrea 2014-09-04 12:13:34

+0

見http://stackoverflow.com/questions/2592511/string-comparison-in-objective-c – Anna 2014-09-04 12:13:52

+0

安德烈。感謝您的幫助。 – georgeOfTheJungle 2014-09-05 09:55:42

回答

4

如果username1和其他琴絃只是char *變量,則指針可即使內容是相同的不同。

在C語言中,你可以使用strcmp對於這一點,但在ObjC,我認爲你必須使用-isEqualToString:方法是這樣的:

if ((flag == 2) && 
    (![username1 isEqualToString:username2]) && 
    (![password1 isEqualToString:password2])) 
+0

你快一分鐘 - 你得到我的贊成票。 ; o) – 2014-09-04 13:12:10

+0

謝謝你的回覆。 – georgeOfTheJungle 2014-09-04 15:52:23

3

比較字符串的內容,而不是對象,採用等:

if ([string isEqualToString:@"Some String"]) 
{ 
    // Do stuff... 
} 
+0

謝謝你的回覆。 – georgeOfTheJungle 2014-09-04 20:37:16