2013-03-29 91 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! –