繁体   English   中英

如何将nil添加到nsmutablearray?

[英]how to add nil to nsmutablearray?

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

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

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

我怎么做这个工作?

好吧,我不必添加零

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

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

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

假设“array”的类型为NSMutableArray:

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

你不需要调用[addObject:nil]

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

在调用addObject时,不能添加nil。

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

nil用于终止数组

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

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

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

这篇Apple参考文献有一个很好的解释。

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

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM