我有一个NSMUtableArray
元素,例如:
A,B,C,E
我想在d
后面c
和之前添加一个对象e
。换句话说,我想插入一个对象到一个已排序的数组中(该对象也可以是一个自定义对象)
我想知道:除了for
用来找到位置,还有其他方法来实现它吗?最好使用iOS API。
发布于 2018-04-23 13:39:38
你可以用-[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];
由于此方法使用二进制搜索,因此比迭代数组中的所有元素更有效。
比较器是一个块对象,它接收两个类型的对象id
并返回一个NSComparisonResult
值。
发布于 2018-04-23 14:07:39
将元素注入已知的索引(位置)使用
- (void)insertObject:(id)anObject atIndex:(NSUInteger)index
并找到以前放置到NSMutableArray使用的对象的位置
- (int)indexOfObject:(id)anObject
https://stackoverflow.com/questions/-100008226
复制相似问题