libro
www.tuyano.com
初心者のためのObjective-Cプログラミング入門

NSArray/NSMutableArrayとオブジェクトの配列 (3/6)

作成:2011-02-15 09:25
更新:2011-11-13 21:17

■NSArrayにオブジェクトを追加するには?

続いて、NSArrayにオブジェクトを追加するメソッドについてです。――「えっ? だって中身は変更できないんでしょ?」と思った人。その通り、NSArrayは、中身を変更することは一切できません。ところが、ちゃんとオブジェクトを追加していくためのメソッドは用意されているんです。

種を明かせば何ということはない、「オブジェクトを追加した新しいNSArrayインスタンスを作って返している」だけなのです。こうすれば、インスタンスの中身が変更できなくても、オブジェクトを追加していくことはできるわけです。
変数 = [《NSArray*》 arrayByAddingObject:《id》];
変数 = [《NSArray*》 arrayByAddingObjectsFromArray:《NSArray*》];
前者のarrayByAddingObject:は、引数のオブジェクトをNSArrayの末尾にオブジェクトを追加した新しいNSArrayを返します。後者のarrayByAddingObjectsFromArray:は、2つのNSArrayを1つにつなげたものを返します。これらにより、オブジェクトを追加して増やしていくことはできるようになります。
        NSArray* arr = [NSArray arrayWithObjects:
               @"one",@"two",nil];
        NSArray* arr2 = [NSArray arrayWithObjects:
                @"three",@"four",nil];
        NSArray* newarr = [arr
                           arrayByAddingObjectsFromArray:arr2];
        NSUInteger n = [newarr count];
        for(int i = 0;i < n;i++){
            NSLog(@"%i:%@",i,[newarr objectAtIndex:i]);
        }
例として、2つのNSArrayを1つにまとめて、その内容を出力するサンプルをあげておきましょう。ここでは、arrayByAddingObjectsFromArray:を使って2つのNSArrayを一つにし、繰り返しで内容を出力しています。

実際にやってみるとわかりますが、こうしてNSArrayをひとつなぎにまとめてみると、最後にあった「nil」は消えていることがわかるでしょう。nilは、オブジェクトが存在してない状態なわけで、「何もない」ことを示すものですから。ひとつなぎにしても、途中にnilという要素が挟まってる、というようなことにはなりません。

※プログラムリストが表示されない場合

AddBlockなどの広告ブロックツールがONになっていると、プログラムリスト等が表示されない場合があります。これらのツールをOFFにしてみてください。

●プログラム・リスト●

※2つのNSArrayを1つにして出力する

#import <Foundation/Foundation.h>

int main (int argc, const char * argv[]) {
    @autoreleasepool {
        NSArray* arr = [NSArray arrayWithObjects:
               @"one",@"two",nil];
        NSArray* arr2 = [NSArray arrayWithObjects:
                @"three",@"four",nil];
        NSArray* newarr = [arr 
                           arrayByAddingObjectsFromArray:arr2];
        NSUInteger n = [newarr count];
        for(int i = 0;i < n;i++){
            NSLog(@"%i:%@",i,[newarr objectAtIndex:i]);
        }
    }
    return 0;
}

※関連コンテンツ

「初心者のためのObjective-Cプログラミング入門」に戻る