NSMutableArrayとは
NSMutableArrayはNSObjectを親オブジェクトとするオブジェクトの集合を格納するオブジェクトです。順番のあるデータの格納に向いています。 中に入れたオブジェクトはそれぞれ0から順番に番号が割り当てられて管理されます。番号の型はNSUIntegerです。 NSArrayとの大きな違いは、こちらは可変長だということです。プログラム中の好きな場所で要素の数を足したり減らしたりできます。そのためUITableViewの各行のデータを格納するのによく利用されます。なお、NSArrayにあるメソッドはこちらでも全て使えます。そのため以下ではNSMutableArray特有のものだけを取り上げます。
代表的なメソッド(目的別)
オブジェクトを末尾に追加したい - addObject:
オブジェクトを途中に挿入したい - insertObject:atIndex
格納しているオブジェクトを全部消したい - removeAllObjects
指定したインデックスのオブジェクトを消したい - removeObjectAtIndex:
オブジェクトを末尾に追加したい - addObject:
- (void)addObject:(id)anObject
現在のNSMutableArrayの末尾に指定したオブジェクトを追加します。countは1増加します。以下の例では文字列を新しく作ったNSMutableArrayオブジェクトへ追加しています。
NSMutableArray *anArray = [[NSMutableArray alloc] init];
NSString *str = [[NSString alloc] initWithString:@"文字列"];
[anArray addObject:str];
[str release];
オブジェクトを途中に追加したい - insertObject:atIndex:
- (void)insertObject:(id)anObject atIndex:(NSUInteger):index
指定したインデックスにオブジェクトを挿入します。以下の例はUITableViewで行を移動する時のコードの一部を抜粋したものです。 一度NSMutableArrayから移動するオブジェクトを取り除き、指定した行へと追加しています。
id item = [[listContent objectAtIndex:fromIndexPath.row] retain];
[listContent removeObject:item];
[listContent insertObject:item atIndex:toIndexPath.row];
[item release];
格納しているオブジェクトを全部消したい - removeAllObjects
- (void)removeAllObjects
NSMutableArrayに格納されているオブジェクトを全部NSMutableArray内から削除します。countは0になります。
[anArrray removeAllObjects];
指定したインデックスのオブジェクトを消したい - removeObjectAtIndex:
- (void)removeObjectAtIndex:(NSUInteger):index
指定したインデックスに該当するオブジェクトをNSMutableArray内から削除します。以下の例はUITableViewで行を移動する時のコードの一部を抜粋したものです。 一度NSMutableArrayから移動するオブジェクトを取り除き、指定した行へと追加しています。上のinsertObject:AtIndex:と状況は全く同じですが、 これはremoveObject:のかわりにremoveObjectAtIndex:を使用しています。
id item = [[listContent objectAtIndex:fromIndexPath.row] retain];
[listContent removeObjectAtIndex:fromIndexPath.row];
[listContent insertObject:item atIndex:toIndexPath.row];
[item release];