Вы можете выполнить необходимую сортировку, изменив основную структуру данных. Рассмотрите возможность использования массива массивов, например ::1001
{
{3.0, Index 0},
{2.0, Index 1},
{3.5, Index 2},
{1.0, Index 4}
}
и заданная функция сортировки:
NSComparisonResult customCompareFunction(NSArray* first, NSArray* second, void* context)
{
id firstValue = [first objectAtIndex:0];
id secondValue = [second objectAtIndex:0];
return [firstValue compare:secondValue];
}
Вы можете отсортировать это так:
NSArray* myArray = [NSArray arrayWithObjects:
[NSArray arrayWithObjects:
[NSNumber numberWithFloat:3.0f],
[NSNumber numberWithInt:0], nil],
[NSArray arrayWithObjects:
[NSNumber numberWithFloat:2.0f],
[NSNumber numberWithInt:1], nil],
[NSArray arrayWithObjects:
[NSNumber numberWithFloat:3.5f],
[NSNumber numberWithInt:2], nil],
[NSArray arrayWithObjects:
[NSNumber numberWithFloat:1.0f],
[NSNumber numberWithInt:4], nil]];
NSArray* sortedArray = [myArray sortedArrayUsingFunction:customCompareFunction context:NULL];
NSLog(@"Sorted array: %@", sortedArray);
Какие отпечатки:
Сортированный массив: (
(
1,
4
),
(
2,
1
),
(
3,
0
),
(
3,5,
2
)
)