indexOfObjectIdenticalTo

indexOfObjectIdenticalTo

我已经看到了关于NSArray的indexOfObjectIdenticalTo:方法的类似问题,但是我希望我的问题只会产生简单的答案。搜索以编程方式构建的字符串是否有用?

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];


在上面的示例中,testContains1testContains2都返回相同的值,即true。但是testIndex1testIndex2不同; testIndex1为0,因为它按预期在索引0处找到了相同的对象,但不幸的是testIndex2为2147483647(NSNotFound)。

最佳答案

关于indexOfObjectIdenticalTo:的文档说:


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


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

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

关于objective-c - iOS indexOfObjectIdenticalTo:不适用于字符串,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11473583/

10-11 14:01