NSMutableArray
NSMutableArrayクラスは、NSArrayを可変としたい場合に使用します。
NSMutableArrayはNSArrayを継承していますので、NSArrayのメソッドはそのまま使用できます。
NSMutableArrayのクラス階層
生成
// 空のリストを生成する
NSMutableArray *mar = [NSMutableArray array];
// 要素を指定してリストを生成する
NSMutableArray *mar =
[NSArray arrayWithObjects:@"東京", @"名古屋", @"大阪", nil];
上の2つの生成例はどちらもautoreleaseされます。
NSMutableArrayのメソッド
メソッド名 | 説明 |
---|---|
-(void)addObject:(id)anObject | リストの末尾に要素を追加する (例)末尾に"hoge"要素を追加する [mar addObject:@"hoge"]; |
-(void)insertObject:(id)anObject atIndex:(unsigned)index |
指定した場所に要素を挿入する (例)リストの4番目に"hoge"要素を挿入する [mar insertObject:@"hoge" atIndex:3]; |
-(void)replaceObjectAtIndex: (unsigned)index withObject:(id)anObject |
指定した場所の要素を入れ替える (例)リストの4番目の要素を"hoge"に入れ替える [mar replaceObjectAtIndex:3 withObject:@"hoge"]; |
-(void)removeAllObjects | リストの全要素を削除する (例)全要素削除 [mar removeAllObjects]; |
-(void)removeObjectAtIndex: (unsigned)index |
指定した場所の要素を削除する (例)リストの4番目の要素を削除する [mar removeObjectAtIndex:3]; |
-(void)removeObject:(id)object | 指定したオブジェクトと同じ要素をリストから全て削除する (例)リストから要素「"ほげ"」を全て削除する [mar removeObject:@"ほげ"]; |
-(void)removeObjectsInRange: (NSRange)aRange |
リストから範囲を指定して要素を削除する (例)リストの3番目から5要素分削除する [mar removeObjectsInRange:NSMakeRange(2, 5)]; |
-(void)removeLastObject | リストの末尾の要素を削除する (例)末尾削除 [mar removeLastObject]; |
-(void)exchangeObjectAtIndex: (NSUInteger)idx1 withObjectAtIndex: (NSUInteger)idx2 |
リストの要素を入れ替える (例)3番目の要素と5番目の要素を入れ替える [mar exchangeObjectAtIndex:2 withObjectAtIndex:4]; |
主要なメソッドのみ掲載しています。
上記「NSMutableArrayのクラス階層」にあるクラスのメソッドも使用できます。
NSMutableArray例文
// リストに要素(みかん、りんご、ぶどう、プリン、りんご、ほげ)を追加する
NSMutableArray *oyatsu = [NSMutableArray array];
[oyatsu addObject:@"みかん"];
[oyatsu addObject:@"りんご"];
[oyatsu addObject:@"ぶどう"];
[oyatsu addObject:@"プリン"];
[oyatsu addObject:@"りんご"];
[oyatsu addObject:@"ほげ"];
※以下、上記 oyatsu を元とした例文です。
// リストの4番目の要素(プリン)の後ろに「大福」を追加する
[oyatsu insertObject:@"大福" atIndex:4];
// リストの1番目の要素(みかん)を「すいか」に変更する
[oyatsu replaceObjectAtIndex:0 withObject:@"すいか"];
// リストの1番目の要素(みかん)と3番目の要素(ぶどう)入れ替える
[oyatsu exchangeObjectAtIndex:0 withObjectAtIndex:2];
// リストの3番目の要素(ぶどう)を削除する
[oyatsu removeObjectAtIndex:2];
// リストから要素「りんご」を全て削除する
[oyatsu removeObject:@"りんご"];
→2番目と5番目にある「りんご」が両方とも削除されます
// リストの2番目から3要素(りんご、ぶどう、プリン)を削除する
[oyatsu removeObjectsInRange:NSMakeRange(1, 3)];
// リスト最終要素(ほげ)を削除する
[oyatsu removeLastObject];
// リストの要素を全て削除する
[oyatsu removeAllObjects];
// リストの4番目の要素(プリン)を取り出す
NSString *str = [oyatsu objectAtIndex:3];
str → プリン
// 空要素(nil)を追加する
[oyatsu addObject:[NSNull null]];
(nil はそのままでは追加できないため、NSNullオブジェクトが用意されています。)
リストの要素番号は 0,1,2… と、1からではなく0から数えるのでご注意ください。