对于相等的字符串,NSOrderedDescending而不是NSOrderedSame,为什么?

时间:2010-05-18 18:11:50

标签: iphone objective-c

我正在计算两个字符串。有平等的。 isEqualToString:会返回NSOrderedDescending

我认为isEqualToString:会返回NSOrderedSame。有人可以向我解释为什么会这样吗?

示例案例 ...

 NSString *myString = @"1";

 if ( [myString isEqualToString:@"1"] == NSOrderedSame ) {
    // is NSOrderedSame
 }

自写完问题以来,我知道我应该使用compare:。它将返回NSOrderedSame。但我想知道,为什么会发生这种情况。

感谢
罗斯

1 个答案:

答案 0 :(得分:6)

它不会返回NSOrderedDescending,而是返回YES。检查该方法的返回类型!

- (BOOL)isEqualToString:(NSString *)aString

NSOrderedDescendingNSComparisonResult,由于其声明,其值恰好为1

enum {
   NSOrderedAscending = -1,
   NSOrderedSame,
   NSOrderedDescending
};
typedef NSInteger NSComparisonResult;

不要混用和匹配类型!