NSMutableArray添加对象的顺序
我有一个具有元素的NSMUtableArray
,例如:
A,B,C,E
我想添加一个对象d
到c
和e
之前。 换句话说,我想插入一个对象到一个有序的数组(该对象也可以是一个自定义的对象)
我想知道:除了用来找位置外,还有其他方法可以实现吗? 最好使用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
并find以前放置到NSMutableArray使用的对象的位置
- (int)indexOfObject:(id)anObject
NSMutableArray – 通过使用stringsearch获取数组索引整数
我只是在两端添加新的对象,然后再次sorting数组。 如果要添加的数组已经sorting,那么移动一个对象的重新sorting将与您自己实现的任何事物一样快。
NSMutableArray *things; // populated id newObject; ... [things addObject:newObject atIndex:0]; [things sortUsingSelector:@selector(compare:)];