はじめに
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])
のようなチェックが必要になります。