一、判斷NSArray是否為空忌愚,需要對各種情況都進(jìn)行判斷:
if (array != nil && ![array isKindOfClass:[NSNull class]] && array.count != 0)
二揩抡、判斷NSDictionary是否為空
NSDictionary * dict = @{@"key1":@"1",@"key2":@"2"};
NSLog(@"%d",dict.count);
1户侥、通過返回key-value對的個(gè)數(shù)
if( [dict count] ) {
? ? ? ?NSLog (@“dict不為空!”);
}
2峦嗤、直接判斷是否為nil(字典里面嵌套字典:假如字典dict里面蕊唐,存在key對應(yīng)的 value還是字典),如圖-1所示的結(jié)構(gòu):
if( [dict objectForKey:@"data"] ) {
? ? ? NSLog (@“data不為空寻仗!”);
}
3. 判斷是否為NSNull刃泌。
if ( ! [ dict[@"data"] isEqual:[NSNull null] ] ) {
? ? NSLog (@“data不為NSNull !”);
}
或者
if ( ! [dict[@"data"] isKindOfClass:[NSNull class]] ) {
NSLog (@“data不為NSNull 署尤!”);
}
4. 關(guān)于nil耙替、Nil、和NULL和NSNull的區(qū)別曹体。
NSNull 是類類型俗扇,NSNull類定義了一個(gè)單例對象用于表示集合對象的空值,是用于表示空的占位對象箕别,與 JS 或者服務(wù)端的 null 類似的含意铜幽。
NULL 是宏,是對于 C 語言指針而使用的串稀,是典型C語言的語法除抛,表示一個(gè)空指針,參考代碼如下:
int *ponit = NULL;
Nil 是宏母截,是對于 Objective-C 中的類而使用的到忽,表示類指向空。
nil 是宏,是對于 Objective-C 中的對象而使用的喘漏,表示對象為空护蝶。
小結(jié):
NSNULL:NSNull只有一個(gè)方法:+ (NSNull *) null;
[NSNull null] 用來在NSArray和NSDictionary中加入非nil(表示列表結(jié)束)的空值.? [NSNull null]是一個(gè)對象,它用在不能使用nil的場合翩迈。
在NSArray和NSDictionary中nil中有特殊的含義(表示列表結(jié)束)持灰,所以不能在集合中放入nil值。如要確實(shí)需要存儲(chǔ)一個(gè)表示“什么都沒有”的值负饲,可以使用NSNull類堤魁。
nil和Nil在使用上是沒有嚴(yán)格限定的,也就是說凡是使用nil的地方都可以用Nil來代替绽族,反之亦然姨涡。只不過從編程人員的規(guī)約中我們約定俗成地將nil表示一個(gè)空對象,Nil表示一個(gè)空類吧慢。
nil是一個(gè)對象指針為空涛漂,Nil是一個(gè)類指針為空。
補(bǔ)充:
id類型:是一個(gè)獨(dú)特的數(shù)據(jù)類型检诗,可以轉(zhuǎn)換為任何數(shù)據(jù)類型匈仗,id類型的變量可以存放任何數(shù)據(jù)類型的對象,在內(nèi)部處理上逢慌,這種類型被定義為指向?qū)ο蟮闹羔樣菩瑢?shí)際上是一個(gè)指向這種對象的實(shí)例變量的指針
id聲明的對象具有運(yùn)行時(shí)特性,既可以指向任意類型的對象