次のような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に移動するなどのこともできるようにしたいと考えています。