2010-05-18 109 views
1

我正在比较两个字符串。有平等的。 isEqualToString:返回NSOrderedDescendingNSOrderedDescending而不是NSOrderedSame为相等的字符串,为什么?

我以为isEqualToString:将返回NSOrderedSame。有人可以向我解释为什么发生这种情况?

例如情况 ...

NSString *myString = @"1"; 

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

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

感谢
罗斯

+1

我删除这个,如果我可以。但我无法... – Ross 2010-05-18 18:16:26

回答

6

不退还NSOrderedDescending,它返回YES。检查该方法的返回类型!

- (BOOL)isEqualToString:(NSString *)aString 

NSOrderedDescendingNSComparisonResult,并且恰好有1的值,因为它声明:

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

不要混搭类型!

+0

哦。对。抱歉。谢谢。 – Ross 2010-05-18 18:15:44

相关问题