NSMutableArray 順序付きオブジェクトを追加する 質問する

NSMutableArray 順序付きオブジェクトを追加する 質問する

NSMUtableArrayたとえば、次のような要素を持つがあります。

a、b、c、e、e の順

dそして、 behindcとbeforeにオブジェクトを追加したいと思いますe。言い換えれば、ソートされた配列にオブジェクトを挿入したいのです。(オブジェクトはカスタムオブジェクトでも構いません)

知りたいのは、for位置を見つけるために使用する以外に、それを実装する他の方法があるかどうかです。iOS API を使用することをお勧めします。

ありがとう。

ベストアンサー1

使用できます-[NSArray indexOfObject:inSortedRange:options:usingComparator:]現在ソートされている配列範囲を指定して、オブジェクトを挿入するインデックスを NSArray に要求します。

たとえば、配列全体がソートされていると仮定します:

NSMutableArray *array = …;
id newObject = …;
NSComparator comparator = …;

NSUInteger newIndex = [array indexOfObject:newObject
                             inSortedRange:(NSRange){0, [array count]}
                                   options:NSBinarySearchingInsertionIndex
                           usingComparator:comparator];

[array insertObject:newObject atIndex:newIndex];

この方法はバイナリ検索を使用するため、配列内のすべての要素を反復処理するよりも効率的です。

コンパレータは、 型の 2 つのオブジェクトを受け取っidて値を返すブロック オブジェクトですNSComparisonResult

おすすめ記事