我正在尝试在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中没有运气。
帮助表示赞赏!
感谢。
戴夫
答案 0 :(得分:0)
您对代码无效的原因做了一个错误的假设。
变化:
if (strCut == @"B")
为:
if ([strCut isEqualToString:@"B"])
为了将来参考,请不要做出假设 - 使用调试器或其他工具来验证问题所在。您可能还想考虑阅读有关Objective-C的介绍性书籍。
答案 1 :(得分:0)
问题是iOS的级别较低,他们可能就是你所使用的,所以==实际上是在比较地址,而不是字符串。你想要的是这个。
if ([strCut compare:@"B"] == NSOrderedSame) {
...
}
希望这会有所帮助。