一、判斷NSArray是否為空,需要對(duì)各種情況都進(jìn)行判斷:
if (array != nil && ![array isKindOfClass:[NSNull class]] && array.count != 0)
二、判斷NSDictionary是否為空
NSDictionary * dict = @{@"key1":@"1",@"key2":@"2"};
NSLog(@"%d",dict.count);
1、通過(guò)返回key-value對(duì)的個(gè)數(shù)
if( [dict count] ) {
? ? ? ?NSLog (@“dict不為空!”);
}
2、直接判斷是否為nil(字典里面嵌套字典:假如字典dict里面,存在key對(duì)應(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 是類(lèi)類(lèi)型,NSNull類(lèi)定義了一個(gè)單例對(duì)象用于表示集合對(duì)象的空值,是用于表示空的占位對(duì)象,與 JS 或者服務(wù)端的 null 類(lèi)似的含意。
NULL 是宏,是對(duì)于 C 語(yǔ)言指針而使用的,是典型C語(yǔ)言的語(yǔ)法,表示一個(gè)空指針,參考代碼如下:
int *ponit = NULL;
Nil 是宏,是對(duì)于 Objective-C 中的類(lèi)而使用的,表示類(lèi)指向空。
nil 是宏,是對(duì)于 Objective-C 中的對(duì)象而使用的,表示對(duì)象為空。
小結(jié):
NSNULL:NSNull只有一個(gè)方法:+ (NSNull *) null;
[NSNull null] 用來(lái)在NSArray和NSDictionary中加入非nil(表示列表結(jié)束)的空值.? [NSNull null]是一個(gè)對(duì)象,它用在不能使用nil的場(chǎng)合。
在NSArray和NSDictionary中nil中有特殊的含義(表示列表結(jié)束),所以不能在集合中放入nil值。如要確實(shí)需要存儲(chǔ)一個(gè)表示“什么都沒(méi)有”的值,可以使用NSNull類(lèi)。
nil和Nil在使用上是沒(méi)有嚴(yán)格限定的,也就是說(shuō)凡是使用nil的地方都可以用Nil來(lái)代替,反之亦然。只不過(guò)從編程人員的規(guī)約中我們約定俗成地將nil表示一個(gè)空對(duì)象,Nil表示一個(gè)空類(lèi)。
nil是一個(gè)對(duì)象指針為空,Nil是一個(gè)類(lèi)指針為空。
補(bǔ)充:
id類(lèi)型:是一個(gè)獨(dú)特的數(shù)據(jù)類(lèi)型,可以轉(zhuǎn)換為任何數(shù)據(jù)類(lèi)型,id類(lèi)型的變量可以存放任何數(shù)據(jù)類(lèi)型的對(duì)象,在內(nèi)部處理上,這種類(lèi)型被定義為指向?qū)ο蟮闹羔?,?shí)際上是一個(gè)指向這種對(duì)象的實(shí)例變量的指針
id聲明的對(duì)象具有運(yùn)行時(shí)特性,既可以指向任意類(lèi)型的對(duì)象