2012-02-25 30 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");