0

我已经看到过关于 NSArrayindexOfObjectIdenticalTo:方法的类似问题,但我希望我的提问能产生简单的答案。搜索以编程方式构建的字符串是否无用?

NSArray* theArray = [[NSArray alloc] initWithObjects:@"John", nil];
NSString* searchString1 = @"John";
NSString* stringComponent = @"Jo";
NSString* searchString2 = [stringComponent stringByAppendingFormat:@"hn"];

BOOL testContains1 = [theArray containsObject:searchString1];
int  testIndex1    = [theArray indexOfObjectIdenticalTo:searchString1];
BOOL testContains2 = [theArray containsObject:searchString2];
int  testIndex2    = [theArray indexOfObjectIdenticalTo:searchString2];

在上面的示例中,testContains1两者testContains2都返回相同的值,即true. 但是testIndex1testIndex2不同;testIndex1为 0,因为它在索引 0 处发现了与预期相同的对象,但不幸testIndex2的是 2147483647 (NSNotFound)。

4

1 回答 1

9

关于的文档indexOfObjectIdenticalTo:说:

如果对象地址相同,则认为对象相同。

对于具有相同内容但构造不同的对象显然不是这种情况。

您需要indexOfObject:在这种情况下使用,它将为您提供YES从该isEqual:方法返回的对象的最低索引。

于 2012-07-13T15:35:42.333 回答