NSString子串不会比较

时间:2011-10-13 23:45:45

标签: iphone objective-c ios ipad

我的字符串比较不断返回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];
        }
    }

3 个答案:

答案 0 :(得分:4)

[NSString -caseInsensitiveCompare:]未返回BOOL,它会返回NSComparisonResult。如果字符串相等(以不区分大小写的方式),这将是0,这就是你看到结果的原因。

反转您的结果,您将被设置,或者更正确,检查它是否是== NSOrderedSame

答案 1 :(得分:2)

您调用的方法返回NSComparisonResult,而不是布尔值。碰巧,等于的NSComparisonResult的值为零,这被解释为false。

答案 2 :(得分:0)

caseInsensitiveCompare:返回NSComparisonResult。尝试[type caseInsensitiveCompare:@“SV”] == NSOrderedSame