0

我正在尝试在 iOS 中与从网络流中获得的字符串进行字符串比较。

读取流的代码是:

uint8_t buffer[1024];
int len;
    while ([inputStream hasBytesAvailable]) 
    {
        len = [inputStream read:buffer maxLength:sizeof(buffer)];
        if (len > 0) 
        {
            NSString *output = [[NSString alloc] initWithBytes:buffer length:len encoding:NSASCIIStringEncoding];
            [self handleServerResponse: intCommand Response:output];
         }else{
            [self endComms];
         }
     }

另一端的服务器总是产生 1024 字节的响应,其中 chr(0) 被放置在数据的末尾以填充缓冲区。

当我进行字符串比较时:

if (strCut==@"B") {
   //do something...
}

我总是得到否定的结果,大概是因为字符串包含响应和大量空字符。

在将响应读入字符串时,我希望能够从缓冲区中删除空字符,但我在 iOS 中没有任何运气。

帮助表示赞赏!

谢谢。

戴夫

4

2 回答 2

0

您对代码为什么不起作用做出了错误的假设。

改变:

if (strCut == @"B")

到:

if ([strCut isEqualToString:@"B"])

为将来参考永远不要做假设 - 使用调试器或其他工具来验证问题是什么。您可能还想考虑阅读有关 Objective-C 的介绍性书籍。

于 2011-08-07T20:24:36.850 回答
0

问题是 iOS 的级别较低,大概是您所使用的,因此 == 实际上是在比较地址,而不是字符串。你要的是这个。

if ([strCut compare:@"B"] == NSOrderedSame) {
   ...
}

希望这可以帮助。

于 2011-08-07T20:33:44.383 回答