カスタム オブジェクトの配列があります。オブジェクトは、バイナリ ファイル内のセグメントを表します。このプロパティloc
は、ファイル内のオブジェクト自体の場所をprev
保持します。ここで、「前の」オブジェクトの場所を保持します。このコンテキストでは、「前」と「次」は、ファイル内でオブジェクトが次々に発生することを必ずしも意味しません。最初のオブジェクトにはprev = 0
. 最後のオブジェクトには、その位置を として保持する次のオブジェクトがありませんprev
。
どうすればそのようなソートを実現できますか? オブジェクトの数は最初は不明です。
//My custom object
@interface MyObject : NSObject
@property (nonatomic, assign) NSInteger loc, prev;
@end
//In the implementation of some other class
NSMutableArray *array = [NSMutableArray new];
{// order should be 6
MyObject *obj = [MyObject new];
obj.loc = 3000;
obj.prev = 111;
[array addObject:obj];
}
{// order should be 2
MyObject *obj = [MyObject new];
obj.loc = 2000;
obj.prev = 222;
[array addObject:obj];
}
{// order should be 4
MyObject *obj = [MyObject new];
obj.loc = 333;
obj.prev = 4000;
[array addObject:obj];
}
{// order should be 1
MyObject *obj = [MyObject new];
obj.loc = 222;
obj.prev = 5000;
[array addObject:obj];
}
{// order should be 5
MyObject *obj = [MyObject new];
obj.loc = 111;
obj.prev = 333;
[array addObject:obj];
}
{// order should be 3
MyObject *obj = [MyObject new];
obj.loc = 4000;
obj.prev = 2000;
[array addObject:obj];
}
{// order should be 0
MyObject *obj = [MyObject new];
obj.loc = 5000;
obj.prev = 0;
[array addObject:obj];
}