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