NSArray *array = [[NSArray alloc] initWithObjects:@"ΕΛΤΑ",
@"ΕΛΤΑ COURIER", @"ACS", @"ACS ΕΞΩΤΕΡΙΚΟ",
@"DHL", @"INTERATTICA", @"SPEEDEX",
@"UPS", @"ΓΕΝΙΚΗ ΤΑΧΥΔΡΟΜΙΚΗ", @"ΜΕΤΑΦΟΡΙΚΕΣ ΕΞΩΤΕΡΙΚΟΥ", nil];
这是有效的,因为它最后没有。
但是我添加了这样的对象:addObject:name
等等......
所以最后我必须添加nil我这样做addObhect:nil但是当我运行应用程序时它仍然在cellForRowAtIndexPath:
崩溃
我该怎么做才能做到这一点?
好的,我不必添加nil
我的应用程序崩溃的原因是什么?
答案 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的空对象。