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
。