2010-05-18 114 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

相關問題