假设我有一个这样的 NSMutableArray:
对象 0 对象 1 对象 2 对象 3 对象 4
并希望将对象 0 和对象 1 移到对象 4 后面:
对象 2 对象 3 对象 4 对象 0 对象 1
我有这个相当长的代码来实现多个对象的重新排序,但我想知道是否有更直接/优雅的方式:
int from = 0;
int to = 5;
int lastIndexOfObjectsToBeMoved = 1;
NSMutableArray *objectsToBeMoved = [[NSMutableArray alloc] init];
for (int i = from; i < lastIndexOfObjectsToBeMoved; i++) {
object *o = [self.objects objectAtIndex:i];
[objectsToBeMoved addObject:o];
}
NSUInteger length = lastIndexOfObjectsToBeMoved-from;
NSRange indicesToBeDeleted = NSMakeRange(from, length);
[self.objects removeObjectsInRange:indicesToBeDeleted];
NSIndexSet *targetIndices = [NSIndexSet indexSetWithIndexesInRange:NSMakeRange(to, length)];
[self.objects insertObjects:objectsToBeMoved atIndexes:targetIndices];
编辑:对不起,我应该澄清一下,我并不总是将对象移动到最后,但也希望能够执行诸如将对象 2 和 3 移动到索引 0 之类的事情。