NSMutableArray添加对象的顺序

我有一个具有元素的NSMUtableArray ,例如:

 A,B,C,E

我想添加一个对象dce之前。 换句话说,我想插入一个对象到一个有序的数组(该对象也可以是一个自定义的对象)

我想知道:除了用来找位置外,还有其他方法可以实现吗? 最好使用iOS API。

谢谢。

你可以使用-[NSArray indexOfObject:inSortedRange:options:usingComparator:]向一个NSArray请求一个对象应该被插入的索引,给定一个当前sorting的数组范围。

例如,假设整个数组被sorting::

 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]; 

由于此方法使用二分search,因此比迭代数组中的所有元素更有效。

比较器是一个块对象,它接收两个types为id对象并返回一个NSComparisonResult值。

将元素注入已知的索引(位置)使用

 - (void)insertObject:(id)anObject atIndex:(NSUInteger)index 

http://developer.apple.com/library/mac/#documentation/Cocoa/Reference/Foundation/Classes/NSMutableArray_Class/Reference/Reference.html

并find以前放置到NSMutableArray使用的对象的位置

 - (int)indexOfObject:(id)anObject 

NSMutableArray – 通过使用stringsearch获取数组索引整数

查找数组中的对象
http://developer.apple.com/library/mac/#documentation/Cocoa/Reference/Foundation/Classes/NSArray_Class/NSArray.html

我只是在两端添加新的对象,然后再次sorting数组。 如果要添加的数组已经sorting,那么移动一个对象的重新sorting将与您自己实现的任何事物一样快。

 NSMutableArray *things; // populated id newObject; ... [things addObject:newObject atIndex:0]; [things sortUsingSelector:@selector(compare:)];