如何将nil添加到nsmutablearray?

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

这是工作的,因为它最终为零。

但是我添加这样的对象: addObject:name etc …所以在最后我必须添加零我做这addObhect:零,但是当我运行应用程序它仍然崩溃在cellForRowAtIndexPath:

我该怎么做这个工作?

好的,我不需要添加零

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

当你调用addObject时候你不能添加nil。

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

NSNull类定义了一个单独的对象,用来表示集合对象中的空值(不允许有nil值)。

假设“数组”是NSMutableArraytypes的:

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

你不需要调用[addObject:nil]

initWithObjects:nil只是用来告诉列表结束的方法,因为C varargs是如何工作的。 使用addObject:添加对象时addObject:不需要添加零。

如果你真的想在你的集合中有一个Null-ish项目, 那么NSNull就在那里。

nil用于终止数组

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

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

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

我个人build议在你的代码devise中使用一个特定的值,比如0而不是null或者nil,但是有时你需要添加null。

这个苹果参考文献有一个很好的解释。

你不能添加一个对象到NSArray因为这个类是不可变的。 你必须使用NSMutableArray如果你想改变它创build后的数组。

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

 -(id) returnNullIfNil:(id) obj { return (obj == nil) ? ([NSNull null]) : (obj); } 

[NSNull null]返回一个空对象,代表零。