Вы можете использовать -[NSArray indexOfObject:inSortedRange:options:usingComparator:]
, чтобы запросить NSArray для индекса, в который должен быть вставлен объект, с учетом диапазона массива, который в данный момент отсортирован.
Например, предполагая, что весь массивsorted ::
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];
Поскольку этот метод использует бинарный поиск, он более эффективен, чем итерация по всем элементам массива.
Компаратор - это блочный объект, который получает два объекта типаid
и возвращает значение NSComparisonResult
.