LoginSignup
10
13

More than 3 years have passed since last update.

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

Last updated at Posted at 2014-06-08

※個人で管理しているHPに引っ越ししました。
リンク切れ等考慮して本ページは残しておきますが、今後はHPのほうで更新します。

変更のない配列を手間少なく用意したい!となる場面は多々あるかと思います。(自分は結構あります)
文字列を入れるならそこまで大変ではありませんが、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];

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

10
13
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
10
13