2013-03-29 58 views
-1

我已经为了这个功能来检查从UDP连接IOS比较两个NSString的

- (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”的消息来的数据,它会跳转到其他{ }

谁能帮助谢谢

回答

0

这行代码 如果(响应==你好) 应 如果([响应isEqualToString:你好])? 因为 “==” 比较ADDRES对象“输入反应”和对象“你好”

1

为了第比较您必须使用isEqualToString功能:

NSString * str = @"oranges"; 
BOOL res = [str isEqualToString:@"apples"]; 
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]; 

} 
+0

thanx您的答案,但你的代码不能正常工作,我尝试了NSLOG(响应),并在调试屏幕中收到了你好,但是如果每次都返回false。另外,如果我尝试类似: NSString * hello = @“hello”; NSString * hello2 = @“hello”; if([hello2 isEqualToString:hello]){} if返回true .. pf im confused! –