2016-01-24 3 views
0

Скажем, у меня есть NSIndexSet индексов массива. Я хочу сортировать это NSIndexSet зависит от NSArray.Сортировка 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". 

Как достичь этого?

+0

Это только создаст «суб» массив, и не возвращает NSIndexSet отсортированных индексов ... –

+0

К сожалению, неправильно. Забыл последнюю часть вашего вопроса. – Larme

ответ

2

Вы не можете достичь того, чего хотите. 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]; 
}]; 
Смежные вопросы