0

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".

これを達成する方法は?

4

1 に答える 1

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];
}];
于 2016-01-24T20:54:08.863 に答える