NSMutableArray は NSArray を継承しているのですが、要素数を変更できるので、追加、挿入、削除などのメソッドが使えるようになります。
NSArray で使ったメソッドはそのまま使えます。要素の結合には注意。
Xcode 9.4
NSMutableArray
基本的な設定
1 |
NSMutableArray *array = [NSMutableArray arrayWithObjects:@"aar1", @"arr2", @"arr3", nil]; |
あるいはこのようにもできます。
1 |
NSMutableArray *array2 = [@[@"arr1", @"arr2", @"arr3"] mutableCopy]; |
これはNSArrayをNSMutableArrayに変更したとも取れます
1 2 |
NSArray *array3 = @[@"arr1", @"arr2", @"arr3"]; NSMutableArray *array = [array3 mutableCopy]; |
NSMutableArray のメソッド
NSMutablearray を下のように生成した場合に使えるメソッドの例です
1.removeObject
2.removeLastObject
3.removeObjectAtIndex
4.removeAllObjects
5.insertObject
6.addObject
7.arrayByAddingObjectsFromArray
removeObject:
指定した要素を削除
1 2 3 4 5 6 7 8 |
NSMutableArray *marray1 = [@[@"arr1", @"arr2", @"arr3"] mutableCopy]; [marray1 removeObject:@"arr2"]; for (id value in marray1) { NSLog(@"%@",value); } |
ログからmarray に残っているのは、arr1, arr3 でarr2が削除されたのがわかります。
1 2 |
2017-03-30 16:58:41.308 TestNSMutableArray[2422:132420] arr1 2017-03-30 16:58:41.308 TestNSMutableArray[2422:132420] arr3 |
removeLastObject:
最後の要素を削除
1 2 3 4 5 6 7 8 |
NSMutableArray *marray2 = [@[@"arr1", @"arr2", @"arr3"] mutableCopy]; [marray2 removeLastObject]; for (id value in marray2) { NSLog(@"%@",value); } |
arr3 が削除され、残っているのは、arr1, arr2 になります
1 2 |
2017-03-30 17:05:01.520 TestNSMutableArray[2444:136290] arr1 2017-03-30 17:05:01.520 TestNSMutableArray[2444:136290] arr2 |
removeObjectAtIndex:
指定したインデックスの要素を削除
1 2 3 4 5 6 7 8 |
NSMutableArray *marray3 = [@[@"arr1", @"arr2", @"arr3"] mutableCopy]; [marray3 removeObjectAtIndex:0]; for (id value in marray3) { NSLog(@"%@",value); } |
arr1 が削除されて、残っているのは、arr2, arr3 になります
1 2 |
2017-03-30 17:08:50.087 TestNSMutableArray[2474:139085] arr2 2017-03-30 17:08:50.087 TestNSMutableArray[2474:139085] arr3 |
removeAllObjects
: すべての要素を削除
1 2 3 4 5 6 7 8 |
NSMutableArray *marray4 = [@[@"arr1", @"arr2", @"arr3"] mutableCopy]; [marray4 removeAllObjects]; for (id value in marray4) { NSLog(@"%@",value); } |
array には何もありません
insertObject
: 要素を挿入する
1 2 3 4 5 6 7 8 |
NSMutableArray *marray5 = [@[@"arr1", @"arr2", @"arr3"] mutableCopy]; [marray5 insertObject:@"arr4" atIndex:1]; for (id value in marray5) { NSLog(@"%@",value); } |
arr4が要素のインデックス1に挿入されました
1 2 3 4 |
2017-03-30 17:27:06.634 TestNSMutableArray[2566:148228] arr1 2017-03-30 17:27:06.634 TestNSMutableArray[2566:148228] arr4 2017-03-30 17:27:06.634 TestNSMutableArray[2566:148228] arr2 2017-03-30 17:27:06.635 TestNSMutableArray[2566:148228] arr3 |
addObject
: 要素を追加する
1 2 3 4 5 6 7 8 |
NSMutableArray *marray6 = [@[@"arr1", @"arr2", @"arr3"] mutableCopy]; [marray6 addObject:@"arr5"]; for (id value in marray6) { NSLog(@"%@",value); } |
最後に arr5 が挿入されました
1 2 3 4 |
2017-03-30 17:30:14.360 TestNSMutableArray[2584:150327] arr1 2017-03-30 17:30:14.361 TestNSMutableArray[2584:150327] arr2 2017-03-30 17:30:14.361 TestNSMutableArray[2584:150327] arr3 2017-03-30 17:30:14.361 TestNSMutableArray[2584:150327] arr5 |
arrayByAddingObjectsFromArray
: 結合する
2つのMutableArrayを結合させます
1 2 3 4 5 6 7 8 9 |
NSMutableArray *marray10 =[@[@"abc", @"bcd", @"cde"] mutableCopy]; NSMutableArray *marray11 =[@[@"xyz", @"uvw", @"end"] mutableCopy]; NSArray *array12 = [marray10 arrayByAddingObjectsFromArray:marray11]; for (id value in array12) { NSLog(@"%@",value); } |
2つが結合されました。尚、結合されたarray12はNSArrayとなります。
1 2 3 4 5 6 |
2017-03-30 17:35:22.161 TestNSMutableArray[2623:153715] abc 2017-03-30 17:35:22.161 TestNSMutableArray[2623:153715] bcd 2017-03-30 17:35:22.161 TestNSMutableArray[2623:153715] cde 2017-03-30 17:35:22.161 TestNSMutableArray[2623:153715] xyz 2017-03-30 17:35:22.161 TestNSMutableArray[2623:153715] uvw 2017-03-30 17:35:22.161 TestNSMutableArray[2623:153715] end |
Ref:
NSMutableArray – Foundation | Apple Developer Documentation