NSMutableIndexSetクラス
解説
継承 | NSObject |
準拠 | NSObject (NSObject) |
フレームワーク | /System/Library/Frameworks/Foundation.framework |
使用可能 | OS X 10.0以降 |
iOS 2.0以降 | |
定義 | NSIndexSet.h |
概要
変更可能な重複しない整数値のコレクションクラスです。常にソートされた状態にあります。
NSArrayの-objectsAtIndexesメソッドなどで使用します。
このクラスはNSMutableSetと名前が似ていますがNSMutableSetのサブクラスではありません。
このクラスをサブクラス化してはいけません。
作成
親クラスであるNSIndexSetのメソッド(+ indexSet)で作成するか、allocで作成した後に親クラスであるNSIndexSetのinitから始まる初期化メソッドで初期化します。
NSMutableIndexSet *aSet = [NSMutableIndexSet indexSet];
インデックスの追加
レシーバーに一つインデックスを追加する場合には(– addIndex)メソッドを使います。インデックスセットを使って追加する場合には(– addIndexes)メソッドを使います。範囲をしていてインデックスを追加する場合には(– addIndexesInRange)メソッドを使用します。
#pragma mark NSIndexSet addIndexes -(void)method002 { NSMutableIndexSet *aSet = [NSMutableIndexSet indexSet]; [aSet addIndex:1]; [aSet addIndex:3]; [aSet addIndex:5]; [aSet addIndex:7]; [aSet addIndex:9]; [aSet addIndexes:[NSIndexSet indexSetWithIndexesInRange:NSMakeRange(8,10)]]; [aSet addIndexesInRange:NSMakeRange(20, 3)]; NSLog(@"%s %@",__FUNCTION__, [aSet description]); //=><NSMutableIndexSet: 0x6869580>[number of indexes: 17 (in 5 ranges), indexes: (1 3 5 7-17 20-22)] }
インデックスの除去
レシーバから一つインデックスを除去するには(– removeIndex)メソッドを使用します。インデックスセットを使って複数のインデックスを除去するには(– removeIndexes)メソッドを使います。範囲を指定してインデックスを除去するには(– removeIndexesInRange)メソッドを使用します。全てのインデックスを除去するには(– removeAllIndexes)メソッドを使用します。
インデックスの除去
#pragma mark NSIndexSet removeIndexes -(void)method005 { NSMutableIndexSet *aSet = [NSMutableIndexSet indexSet]; [aSet addIndexes:[NSIndexSet indexSetWithIndexesInRange:NSMakeRange(1,50)]]; NSIndexSet *indexSet = [NSIndexSet indexSetWithIndexesInRange:NSMakeRange(10,10)]; [aSet removeIndexes:indexSet]; NSLog(@"%s %@",__FUNCTION__, [aSet description]); //=><NSMutableIndexSet: 0x6852f80>[number of indexes: 40 (in 2 ranges), indexes: (1-9 20-50)] }
インデックスグループのシフト
指定したインデックス以降のグループ全体を移動します。移動値は負の数値でも可能です。
– shiftIndexesStartingAtIndex:by
#pragma mark NSIndexSet removeIndexes -(void)method006 { NSMutableIndexSet *aSet = [NSMutableIndexSet indexSet]; [aSet addIndex:1]; [aSet addIndex:3]; [aSet addIndex:5]; [aSet addIndex:7]; [aSet addIndex:9]; NSLog(@"%s %@",__FUNCTION__, [aSet description]); //=><NSMutableIndexSet: 0x6880a00>[number of indexes: 5 (in 5 ranges), indexes: (1 3 5 7 9)] [aSet shiftIndexesStartingAtIndex:5 by:10]; NSLog(@"%s %@",__FUNCTION__, [aSet description]); //=><NSMutableIndexSet: 0x6852f80>[number of indexes: 40 (in 2 ranges), indexes: (1-9 20-50)] }