0

プレフィックスが「be」のすべてのオブジェクトを抽出したいのですが、さまざまなインデックスからすべてではなく、最初のオブジェクトのみを取得します。「配列」にはさまざまなオブジェクトが含まれ、「be」、「become」、「beta」、「be」、「beaver」などのオブジェクトが含まれています。ここで何が問題になっていますか?

を使用するlocalizedCaseInsensitiveCompare:と、「」に関して正しい2つの「be」のみが表示されisEqualToString:ます。「array」には、実際には異なるインデックスからの2つの「be」が含まれています。

コードは次のとおりです。

NSString *string =@"be";

NSRange range = NSMakeRange(0, 24);

NSIndexSet *indexSet = [[NSIndexSet alloc] initWithIndexesInRange: range];

[array enumerateObjectsAtIndexes:indexSet options: NSEnumerationConcurrent usingBlock:^(id obj, NSUInteger index, BOOL *stop)

{
    //if([obj localizedCaseInsensitiveCompare:string] == NSOrderedSame)
    if([obj hasPrefix:string])

    {
        NSLog(@"Object Found: %@ at index: %i",obj, index);

        *stop=YES;

    }

} ];
4

1 に答える 1

3

行を介して単一の結果を見つけたらすぐにループを停止するため、最初の結果のみが得られます*stop = YES。それを削除します。

また、テストで使用-indexesOfObjectsPassingTest:し、返されたインデックスセットを取得して、に渡す必要があり-objectsAtIndexes:ます。

于 2011-10-20T22:54:50.287 に答える