我有这个功能,以检查来自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 {}
有人可以帮忙吗?谢谢
答案 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];
}