NSMutableArray按顺序添加对象

sco*_*ozj 51 sorting objective-c nsmutablearray

我有一个NSMUtableArray元素,例如:

a,b,c,e

我想在d后面c和之前添加一个对象e.换句话说,我想将一个对象插入一个有序数组.(该对象也可以是一个自定义对象)

我想知道:除了for用于找到位置之外,还有其他方法可以实现它吗?最好使用iOS API.

谢谢.

小智 112

-[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];
Run Code Online (Sandbox Code Playgroud)

由于此方法使用二进制搜索,因此它比迭代数组中的所有元素更有效.

比较器是一个块对象,它接收两个类型的对象id并返回一个NSComparisonResult值.

  • 如果有人不知道如何使用NSComparator - NSComparator compareStuff = ^(id obj1,id obj2){return NSOrderedSame; }; (5认同)