[英]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。
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.