LoginSignup
1
1

More than 5 years have passed since last update.

NSArray, NSMutableArrayの要素にnilを入れたい

Last updated at Posted at 2015-11-26

はじめに

NSArrayでは要素nilは終端を意味するので、途中に追加することができない。
しかし、条件によってNULLなオブジェクトを要素にしたい場合はある。

Cだったら

char *array[] = { "aaa", NULL, "bbb", NULL, "ccc"};

のようにしたい場合である。

解決方法

NULLを意味するするオブジェクトを返す[NSNull null]を使うとよい

@[@0, @1, [NSNull null], @3, @4]

というのをNSMutableArrayで動的に作りたい場合は

NSArray *someArray = @[@"hoge", @"fuga", [NSNull null], @"hogehoge", nil];

NSMutableArray *mutable = [NSMutableArray array];
for(int i = 0; i < 5; i++) {
  if( i != 2 ) {
    [mutable addObject:[NSNumber numberOfInt:i];
  } else {
    [mutable addObject:[NSNull null]];
  }
}

とすれば良い

追記

コメントで頂いた通り、nilと[NSNull null]は別物なので、nilと同じようには使えません。
[NSNull null]のオブジェクトにメソッドを呼ぶとクラッシュしてしまうので、
if(obj != [NSNull null])
のようなチェックが必要になります。

1
1
3

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
1
1