2017-05-11 9 views
2

でオブジェクトを保持します。 NSIndexSetで配列の項目を除くすべての項目を削除したい。だから基本的には何かNSMutableArrayのは、私はNSMutableArrayのとNSIndexSetを持ってOSXないのiOS、Objective-Cの</p> <p>、私はXcodeの8.2の午前indexSet

[array keepObjectsAtIndexes:indexSet]; // just to carify i know this doesnt exist 

これを行うにはどうすればよい方法がありますか?どういうわけかインデックスセットを逆転できますか?

+0

'NSMutableIndexSet * indexSetToRemove = [[NSMutableIndexSet ALLOC] initWithIndexesInRange:NSMakeRange(0、[配列数])] [indexSetToRemove removeIndexes:indexSetToKeep]。 [配列removeObjectsAtIndexes:indexSetToRemove]; '? – Larme

答えて

0

あなたも不要な配列を作成せずにこれを行うことができます:

// Initial array 
NSMutableArray* array = [[NSMutableArray alloc] initWithArray:@[@"one", @"two", @"three", @"four", @"five"]]; 

// Indices we want to keep 
NSIndexSet* indexSet = [[NSIndexSet alloc] initWithIndexesInRange:NSMakeRange(1, 3)]; 

// Preparing reversed index set 
NSMutableIndexSet *indexSetToRemove = [[NSMutableIndexSet alloc] initWithIndexesInRange:NSMakeRange(0, [array count])]; 
[indexSetToRemove removeIndexes:indexSet]; 

// Removing objects from that set 
[array removeObjectsAtIndexes:indexSetToRemove]; 

出力をbしますE:

2017-05-11 20:10:22.317 Untitled 15[46504:32887351] (
    two, 
    three, 
    four 
) 

乾杯

0

objectsAtIndexesでオブジェクトを取得し、オブジェクト全体を結果に置き換えることができます。

NSArray *temp = [array objectsAtIndexes:indexSet]; 
[array replaceObjectsInRange:NSMakeRange(0, array.count) withObjectsFromArray: temp]; 
1

あなたは範囲0内のすべてのインデックスを持つインデックスセットを構築することにより、与えられたNSIndexSetの逆を構築することができます。.. arrayCount-1、包括的、およびそれからあなたindexSetにインデックスを削除する:

NSMutableIndexSet *indexesToRemove = [NSMutableIndexSet initWithIndexesInRange:NSMakeRange(0, array.count)]; 
[indexesToRemove removeIndexes:indexesToKeep]; 
[array removeObjectsAtIndexes:indexesToRemove]; 
関連する問題

 関連する問題