ios比较两个NSStrings

时间:2013-03-29 11:33:37

标签: ios nsstring udp

我有这个功能,以检查来自udp连接的未来数据

- (void)socket:(GCDAsyncSocket *)sock didReadData:(NSData *)data withTag:(long)tag 
{    
 NSString *response = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
NSString *hello = @"hello";
if(response == hello){
    [self debugPrint:[NSString stringWithFormat:@"ok"]];
}
else{
    [self debugPrint:[NSString stringWithFormat:@"Read:  \n%@",response]];
}

    [response release];

}

我发送“你好”,但它永远不会返回“ok”消息,它会跳转到else {}

有人可以帮忙吗?谢谢

3 个答案:

答案 0 :(得分:1)

为了比较你必须使用isEqualToString函数:

NSString * str = @"oranges";
BOOL res = [str isEqualToString:@"apples"];

答案 1 :(得分:0)

这行代码     if(响应==你好) 应该     if([response isEqualToString:hello])     因为“==”比较对象“respone”和对象“hello”的地址

答案 2 :(得分:0)

“isEqualToString:”是一个方法,它将指针(“aString”)带到NSString对象,并将其与调用它的NSString对象进行比较。

if ([thing1 isEqualToString: thing2])

这里“thing1”是一个指向NSString对象的指针,我们使用它的成员方法“isEqualToString:”将它与NSString对象“thing2”进行比较。

所以“thing1”不是一个参数,而是一个对象,它有一个成员方法(或者更简单的函数),称为“isEqualToString:”

- (void)socket:(GCDAsyncSocket *)sock didReadData:(NSData *)data withTag:(long)tag 
{    
   NSString *response = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
  NSString *hello = @"hello";
// check like this
  if(response isEqualToString:hello){
    [self debugPrint:[NSString stringWithFormat:@"ok"]];
    }
  else{
    [self debugPrint:[NSString stringWithFormat:@"Read:  \n%@",response]];
    }

    [response release];

}