Логическим советом будет то, что если объекты отсортированы вместе, то они как-то связаны, и обе части данных должны соответствовать новому объекту (словарь, объект NSObject и т. Д.).
Я имею в виду, что если array1 - [1, 5, 4, 3, 2]
, а array2 - ["hello", "world", "big", "little", "my"]
, то смешанный массив будет иметь вид:
[(1, "hello"), (5, "world"), (4, "big"), (3, "little"), (2, "my")]
.
Сортировать это тривиально, и имеет смысл, еслиданные коррелированы (невозможно сказать, так как вы не указали это).
Пример Objective-C
Пользовательский объект (CustomObject.h), который содержит как имя / номер (используячисло в качестве простого примера):
@interface CustomObject : NSObject
@property (nonatomic,retain) NSString *name;
@property (nonatomic,assign) NSInteger number;
+ (id)customObjectWithName:(NSString*)name andNumber:(NSInteger)number;
@end
CustomObject.m:
#import "CustomObject.h"
@implementation CustomObject
@synthesize name, number;
+ (id)customObjectWithName:(NSString*)name andNumber:(NSInteger)number
{
CustomObject *customObject = [[CustomObject alloc] init];
customObject.name = name;
customObject.number = number;
return customObject;
}
- (NSString *)description
{
return [NSString stringWithFormat:@"(Number:%d, Name:%@)", self.number, self.name];
}
- (void)dealloc
{
[name release];
[super dealloc];
}
@end
Использование этих объектов вместе с сортировкой:
NSMutableArray *array = [[NSMutableArray alloc] initWithObjects:
[CustomObject customObjectWithName:@"Hello" andNumber:1],
[CustomObject customObjectWithName:@"gentlemen?" andNumber:5],
[CustomObject customObjectWithName:@"you" andNumber:4],
[CustomObject customObjectWithName:@"are" andNumber:3],
[CustomObject customObjectWithName:@"how" andNumber:2],
nil];
[array sortUsingComparator:^NSComparisonResult(id obj1, id obj2)
{
return [(CustomObject*)obj1 number] - [(CustomObject*)obj2 number];
}];
NSLog(@"Results: %@", array);
Вывод выглядит следующим образом:
2011-09-23 03:27:14.388 Test[5942:b303] Results: (
"(Number:1, Name:Hello)",
"(Number:2, Name:how)",
"(Number:3, Name:are)",
"(Number:4, Name:you)",
"(Number:5, Name:gentlemen?)"