-1

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];

}

「hello」を送信しても「ok」メッセージが返されず、else にジャンプする{}

誰か助けてくれますか?ありがとう

4

3 に答える 3

1

比較するには、 isEqualToString 関数を使用する必要があります。

NSString * str = @"oranges";
BOOL res = [str isEqualToString:@"apples"];
于 2013-03-29T11:37:55.320 に答える
0

このコード行 if(response == hello) は if([response isEqualToString:hello]) である必要があります。これは、"==" がオブジェクト "response" とオブジェクト "hello" のアドレスを比較するためです。

于 2013-03-29T11:35:44.023 に答える
0

「isEqualToString:」は、NSString オブジェクトへのポインター (「aString」) を取得し、それが呼び出された 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];

}
于 2013-03-29T11:53:10.443 に答える