Сортировка NSIndexSet подмассива NSArray
Скажи у меня есть NSIndexSet
индексов массива. Я хочу отсортировать это NSIndexSet
зависит от NSArray
,
Итак, допустим, у нас есть массив:
array = @[1,4,3,8,6,2,9];
и набор индексов
indexSet : (2,4,5,6)
поэтому "подмассив" этих индексов будет
subArray = @[3,6,2,9]
Итак, что я хотел бы иметь:
I have :
indexSet : (2,4,5,6)
array = @[1,4,3,8,6,2,9];
return indexSet : (5,2,4,6) --> this are sorted indexes of "sub array".
Как этого добиться?
1 ответ
Решение
Вы не можете достичь того, что вы хотите. NSIndexSet
не поддерживает порядок отдельно от порядка самих индексов. Это всегда в порядке индекса.
Вы можете создать массив числовых объектов, которые вы рассматриваете как индексы.
NSArray* array = /* ... */;
NSMutableArray* indexes = [[NSMutableArray alloc] init];
[indexSet enumerateIndexesUsingBlock:^(NSUInteger idx, BOOL *stop){
[indexes addObject:@(idx)];
}];
[indexes sortUsingComparator:^NSComparisonResult(NSNumber* obj1, NSNumber* obj2){
NSUInteger index1 = obj1.unsignedIntegerValue;
NSUInteger index2 = obj2.unsignedIntegerValue;
id element1 = array[index1];
id element2 = array[index2];
return [element1 compare:element2];
}];