NSMutableArray添加对象的顺序?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (357)

我有一个NSMUtableArray元素,例如:

A,B,C,E

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

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

提问于
用户回答回答于

你可以用-[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值。

用户回答回答于

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

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

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

- (int)indexOfObject:(id)anObject

扫码关注云+社区

领取腾讯云代金券