如何将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]返回一个空对象,代表零。