isEqualToString不评估true

时间:2015-03-15 13:43:00

标签: cocoa-touch nsstring nsdata

方法:

- (void)serverResponse:(NSData *)data
{
    NSString *response = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
    NSLog(@"%@", response);
    NSLog(@"%i", [response isEqualToString:@"1"]);
}

日志:

2015-03-15 06:26:53.716 appName[687:60b] 1                            
2015-03-15 06:26:53.718 appName[687:60b] 0

这似乎没有任何意义。我猜这个问题与编码有关,但我不确定是什么。任何帮助表示赞赏。

1 个答案:

答案 0 :(得分:1)

比较字符串时,NSString不会考虑编码。

您的问题很简单:响应在" 1"。

之后包含28个空格

两种可能的解决方案:

BOOL integerValueEquality = [response integerValue] == 1;

NSString *trimmedString = [response stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]];
BOOL stringEquality = [trimmedString isEqualToString:@"1"];