我的字符串比较不断返回false,我不明白为什么。甚至我的nslog都说价值是正确的。你知道为什么我的比较仍然返回false,即使字符串看起来是相同的吗?如果我单步执行程序类型,则显示SV作为其值。我确保这个字符串中也没有空格。我们得到了前两个字符: SV2B799E5B-4306-4965-B5DD-944D3970E6B6
NSString *fPath = [path stringByAppendingPathComponent:[directoryContent objectAtIndex:x]];
NSString *fName = [directoryContent objectAtIndex:x];
NSString *type = [fName substringToIndex:2];
NSLog(@"TYPE: %@",type);
if ([type caseInsensitiveCompare:@"SV"])
{
NSData *file = [[NSData alloc] initWithContentsOfFile:fPath];
if (file)
{
[[WebService sharedWebService]saveVolunteer:nil :YES :[directoryContent objectAtIndex:x] :file];
[file release];
}
}
答案 0 :(得分:4)
[NSString -caseInsensitiveCompare:]
未返回BOOL
,它会返回NSComparisonResult
。如果字符串相等(以不区分大小写的方式),这将是0,这就是你看到结果的原因。
反转您的结果,您将被设置,或者更正确,检查它是否是== NSOrderedSame
。
答案 1 :(得分:2)
您调用的方法返回NSComparisonResult,而不是布尔值。碰巧,等于的NSComparisonResult的值为零,这被解释为false。
答案 2 :(得分:0)
caseInsensitiveCompare:返回NSComparisonResult。尝试[type caseInsensitiveCompare:@“SV”] == NSOrderedSame