NSMutableArray add object with order

前端 未结 3 872
猫巷女王i
猫巷女王i 2021-01-30 12:50

I have a NSMUtableArray which has elements, for example:

a,b,c,e

And I want to add an object d to behind c and befor

3条回答
  •  無奈伤痛
    2021-01-30 13:13

    You can use -[NSArray indexOfObject:inSortedRange:options:usingComparator:] to ask an NSArray for the index where an object should be inserted given an array range that’s currently sorted.

    For example, assuming the entire array is 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];
    

    Since this method uses binary search, it is more efficient than iterating over all elements in the array.

    The comparator is a block object that receives two objects of type id and returns an NSComparisonResult value.

提交回复
热议问题