3

为什么这个比较结果NO

BOOL areTheSame = NSOrderedSame == [@"th" compare:@"They" options:NSCaseInsensitiveSearch range:NSMakeRange(0, 2)];

当我对其进行测试时@"th"@"Th"它是YES.

我在这里想念什么?

4

1 回答 1

6

这是违反直觉的,但该range论点仅适用于接收者。另一个字符串的长度( 的参数compare:)不受范围限制。您的调用减少@"th"到产生的范围 {0,2} @"th"(即,这没有效果),然后将其与@"They".

你会看到:

NSComparisonResult comp = [@"They" compare:@"th" 
                                   options:NSCaseInsensitiveSearch 
                                     range:NSMakeRange(0, 2)];
BOOL areTheSame = comp == NSOrderedSame;

产生您期望的结果,因为它将接收器 ( @"They") 向下 ( 到@"Th") 然后进行比较。

于 2012-05-25T20:17:03.223 回答