0

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ですが、残念ながらtestIndex22147483647(NSNotFound)です。

4

1 に答える 1

9

に関するドキュメントは次のようにindexOfObjectIdenticalTo:述べています。

オブジェクトのアドレスが同じである場合、オブジェクトは同一であると見なされます。

これは、同じコンテンツを持っているが、構成が異なるオブジェクトには明らかに当てはまりません。

この場合、を使用する必要があります。これにより、メソッドからindexOfObject:返されるオブジェクトのインデックスが最も低くなります。YESisEqual:

于 2012-07-13T15:35:42.333 に答える