iPhoneアプリ開発の虎の巻
HOME > NSMutableArray

NSMutableArray

NSMutableArrayクラスは、NSArrayを可変としたい場合に使用します。
NSMutableArrayはNSArrayを継承していますので、NSArrayのメソッドはそのまま使用できます。

NSMutableArrayのクラス階層

NSObjectNSArray ↑ NSMutableArray

生成

// 空のリストを生成する
NSMutableArray *mar = [NSMutableArray array];

// 要素を指定してリストを生成する
NSMutableArray *mar =
    [NSArray arrayWithObjects:@"東京", @"名古屋", @"大阪", nil];

上の2つの生成例はどちらもautoreleaseされます。

NSMutableArrayのメソッド

【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から数えるのでご注意ください。

totop