2012-02-25 72 views
-1

我面臨一個奇怪的問題,我簡單地比較兩個字符串值,並做一些事情,如果它匹配..我創建了一個Python腳本服務器從哪裏我得到一個值和另一個值是本地字符串變量。我能夠以檢索fromt服務器的正確值,但比較時,它不會進入循環..程序不進入循環(比較兩個字符串值)

這是我的代碼在我的客戶比較值

-(void)messageReceived:(NSString *)message { 

    [_messages addObject:message]; 
    NSLog(@"the received message is %@",message); 

    if (message == @"1") 
     NSLog(@"the user is online"); 
    else if (message == @"0") { 
     UIAlertView *alert; 
     alert = [[UIAlertView alloc]initWithTitle:@"Message" message:@"The selected user is not online !" delegate:self cancelButtonTitle:@"cancel" otherButtonTitles: nil]; 
     [alert show]; 
    } 
} 

這裏是一個日誌是我得到顯示正確的值

2012-02-25 21:44:35.376 iMessenger [2001:207]服務器說:1 2012-02-25 21:44:35.377 iMessenger [2001:207]收到的消息是1

有人可以建議我什麼是錯的。謝謝

+1

如果指針指向同一個對象你的if語句檢查。使用Objective-C需要很好的理解指針。請參閱@sch的答案。 – 2012-02-25 17:53:49

回答

4

不要使用==比較字符串。改爲使用[message isEqualToString:@"1"]

+0

[message isEquaToString]也不起作用 – 2012-02-25 19:07:01

+0

這裏是截圖!(http://i.imgur.com/nKmRo.png) – 2012-02-25 19:10:18

+0

你的意思是'[message isEqualToString:@「1」]'不計算爲'當'消息是'1','NSLog(@「用戶在線)';'不執行? – sch 2012-02-25 19:13:53

0

使用isEqualToString比較的NSString值:

if ([message isEqualToString:@"1"]) 
    NSLog(@"the user is online"); 
.... 
+0

好吧,得到它..我不得不改變我的服務器腳本感謝 – 2012-02-25 22:54:16

0

您可以使用caseInsensitiveCompare

if([message caseInsensitiveCompare:@"1"]) 
NSLog(@"the user is online");