如何将nil添加到nsmutablearray?

时间:2010-01-13 15:39:52

标签: iphone objective-c nsmutablearray null

NSArray *array = [[NSArray alloc] initWithObjects:@"ΕΛΤΑ",
                      @"ΕΛΤΑ COURIER", @"ACS", @"ACS ΕΞΩΤΕΡΙΚΟ", 
                      @"DHL", @"INTERATTICA", @"SPEEDEX", 
                      @"UPS", @"ΓΕΝΙΚΗ ΤΑΧΥΔΡΟΜΙΚΗ", @"ΜΕΤΑΦΟΡΙΚΕΣ ΕΞΩΤΕΡΙΚΟΥ", nil];

这是有效的,因为它最后没有。

但是我添加了这样的对象:addObject:name等等...... 所以最后我必须添加nil我这样做addObhect:nil但是当我运行应用程序时它仍然在cellForRowAtIndexPath:崩溃

我该怎么做才能做到这一点?

好的,我不必添加nil

我的应用程序崩溃的原因是什么?

9 个答案:

答案 0 :(得分:230)

如果必须将nil对象添加到集合中,请使用NSNull类:

  

NSNull类定义一个单例对象,用于表示集合对象中的空值(不允许使用nil值)。

假设“array”的类型为NSMutableArray:

....
[array addObject:[NSNumber numberWithInt:2];
[array addObject:@"string"];
[array addObject:[NSNull null]];

答案 1 :(得分:26)

您无需致电[addObject:nil]

nil中的initWithObjects:只是告诉列表结束的方法,因为C varargs的工作方式。当您使用addObject:逐个添加对象时,无需添加nil。

答案 2 :(得分:19)

当您致电addObject时,您无法添加nil。

答案 3 :(得分:15)

如果你真的想在你的收藏中使用Null-ish项目,NSNull就是为此而存在的。

答案 4 :(得分:6)

nil用于终止数组

答案 5 :(得分:6)

你需要添加NSNull类,最好的方法就是这样:

NSArray *array = @[ @"string", @42, [NSNull null] ];

我个人建议在您的代码设计中使用类似0的特定值而不是null或nil,但有时您需要添加null。

this Apple reference有一个很好的解释。

答案 6 :(得分:5)

nil不是可以添加到数组的对象:数组不能包含nil。这就是addObject:nil崩溃的原因。

答案 7 :(得分:0)

您无法将对象添加到NSArray,因为该类是不可变的。如果要在创建数组后更改数组,则必须使用NSMutableArray

答案 8 :(得分:0)

在添加到数组时通过此方法传递对象,以避免尝试从对象中插入nil对象崩溃。

{{1}}

[NSNull null]返回一个表示nil的空对象。