簡體   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