Edited at

iOSアプリ開発:配列について

More than 3 years have passed since last update.

変更のない配列を手間少なく用意したい!となる場面は多々あるかと思います。(自分は結構あります)

文字列を入れるならそこまで大変ではありませんが、intやfloatになるとそのままだとエラーとなってしまいます。


Test.m

NSArray *test = [NSArray arrayWithObjects:@"a", nil];


記述について、大分楽な書き方があるのを知りましたので書いておきます。


1次元配列を用意


パターン1

そのまま値を入れようとするとエラーとなってしまう為、NSNumberでゴリゴリと入れて大変見にくくなっています。


Test.m

NSArray *test = [NSArray arrayWithObjects:[NSNumber numberWithInteger:0], [NSNumber numberWithInteger:1], [NSNumber numberWithInteger:2], [NSNumber numberWithInteger:3], nil];



パターン2

なんと、@を使う事により、こんな見やすく記述出来ました。


Test2.m

NSArray *test = @[@0, @1, @2, @3];



1次元配列を用意(変数)

ほぼ直接値を入れる場合と同じです。

が、括弧が無いとパターン2で怒られてしまいます。


パターン1

こちらもそのまま値を入れようとするとエラーとなってしまう為、NSNumberでゴリゴリと入れて大変見にくくなっています。


Test.m

int val = 0;

NSArray *test = [NSArray arrayWithObjects:[NSNumber numberWithInteger:val], [NSNumber numberWithInteger:val], [NSNumber numberWithInteger:val], [NSNumber numberWithInteger:val], nil];


パターン2

なんと、こちらも@を使う事により、こんな見やすく記述出来ました。

あと、括弧も付けないとエラーが出てしまうので注意。


Test2.m

int val = 0;

NSArray *test = @[@(val), @(val), @(val), @(val)];


2次元配列を用意


パターン1

1次元同様、NSNumberでゴリゴリと入れて更に大変見にくくなっています。


Test.m

NSArray *test = [NSArray arrayWithObjects:[NSArray arrayWithObjects:[NSNumber numberWithInt:0], [NSNumber numberWithInt:1], [NSNumber numberWithInt:2], [NSNumber numberWithInt:3], nil], [NSNumber numberWithInt:10], [NSNumber numberWithInt:20], [NSNumber numberWithInt:30], nil];



パターン2

1次元同様、こんな見やすく記述出来ました。


Test2.m

NSArray *test = @[@[@0, @1, @2, @3], @10, @20, @30];



配列から値を取得


パターン1

やや面倒ですね。


Test.m

int testValue = [[[mPosTbl objectAtIndex:0] objectAtIndex:0] intValue];



パターン2

結構すっきりした記述で出来ます。


Test2.m

int testValue = [mPosTbl[0][0] intValue];


もっと楽に記述出来る!ここ間違ってる!等、何かありましたら教えて頂けると助かります。