1 - (BOOL) isBlankString:(NSString *)string { 2 3 if (string == nil || string == NULL) { 4 5 return YES; 6 7 } 8 9 if ([string isKindOfClass:[NSNull class]]) { 10 11 return YES; 12 13 } 14 15 if ([[string stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]] length]==0) { 16 17 return YES; 18 19 } 20 21 return NO; 22 23 } 24 25 NSNull是一個特殊的類,它和nil一樣,也代表空值,但二者有區別,NSNull不接收NSArray的那些方法,它只有一個類方法: 26 27 +(NSNull *)null; 28 因此發送NSArray特有的方法或屬性訪問都會導致程序crash。我們做空值判斷的很大一部分原因就是為了在后台接口數據返回一些異常數據的時候,程序能保證穩定性。 29 30 舉個例子:某些情況下,后台可能由於各種原因,對某個字段返回了null值,這時我們取到的就是[NSNull null]這樣一個對象,再比如說,后台可能對某一個數據取值,但取到了0個,這時返回的是一個空組,我們取到的就是@[],空組。 31 32 因此判斷數組是否為空,需要對各種情況都進行判斷。寫法有很多種,比如你可以寫成: 33 34 if (array != nil && ![array isKindOfClass:[NSNull class]] && array.count != 0)