NSString isEqualToString:不起作用。为什么?

时间:2010-08-27 19:39:33

标签: cocoa nsstring

我使用

创建一个NSString
NSString *myString = [[NSString alloc] initWithBytes:someBuffer length:sizeof(someBuffer) encoding:NSASCIIStringEncoding];

我使用NSLog输出myString并显示“Hello”。

如果是这种情况,那么为什么会失败。

NSString *helloString = @"Hello"

BOOL check = [myString isEqualToString:helloString];

2 个答案:

答案 0 :(得分:6)

你的myString变量实际上是一个长度为64的NSString;其他字符可能未定义。你最想做的是:

NSString *myString = [[NSString alloc] initWithBytes:someBuffer length:strlen(someBuffer) encoding:NSASCIIStringEncoding];

这假设缓冲区中存在以空字符结尾的C字符串。

答案 1 :(得分:4)

调用NSLog()时可能看不到一些尾随字符。例如:空格,换行符甚至'\ 0'字符。

检查[myString length]以查看它是否返回5.