iOS - nil、Nil、NULL、NSNull介紹和開發(fā)中對象為空的判斷

在開發(fā)中我們會經(jīng)常遇到得數(shù)據(jù)為空的判斷。
比如我們在獲取地址省市區(qū)信息的時(shí)候,有時(shí)會因?yàn)槟承┦袥]有區(qū)的情況導(dǎo)致返回空<null>,如果這樣進(jìn)行網(wǎng)絡(luò)請求會出現(xiàn)app奔潰的情況,所以這時(shí)候我們就要進(jìn)行數(shù)據(jù)判斷之后在去發(fā)送請求。

一、首先我們先對iOS開發(fā)中遇到的空值進(jìn)行介紹:

  • nil :指向一個(gè)對象的空指針,nil是一個(gè)空對象,已經(jīng)完全從內(nèi)存中消失了

  • Nil :指向一個(gè)類的空指針(完全等同于nil 但是常用于類置空)

  • NULL :指向其他類型的空指針(比如:基本類型和c類型).

  • NSNull :通常表示集合中的類型(其實(shí)它也是一個(gè)對象,擁有有效的內(nèi)存地址)[NSNull null]

二、對JSON返回的<null>進(jìn)行判斷

if([result isEqual:[NSNull null]]) {
    //result是從服務(wù)器返回的數(shù)據(jù)
    //在這里進(jìn)行操作
}

三、對(null)的判斷

if(result == nil) {
   //在這里進(jìn)行操作
}

四、基本數(shù)據(jù)類型的空值判斷

  • 對于類似于NSString類型的數(shù)據(jù)進(jìn)行空值判斷
  1、string == nil;
  2、[string isEqualToString:@""];
  • 對于類似于NSNumber類型的數(shù)據(jù)進(jìn)行空值判斷
  1、number == nil;
  2、[number isEqualToNumber:@0];
  • 對于類似于NSArray類型的數(shù)據(jù)進(jìn)行空值判斷
  1、array == nil;
  2、array.count = 0;
  • 對于類似于NSDictionary類型的數(shù)據(jù)進(jìn)行空值判斷
  1、[dictionary isEqual:[NSNull null]];
  2、dictionary.count = 0;
  • 對于對象類型的數(shù)據(jù)進(jìn)行空值判斷
if(!class) return;

抽取方法:

  - (NSString *) changeForNull:(NSString *)change{
    
    NSString *temp = [NSString stringWithFormat:@"%@", change];
    
    if ([temp isEqualToString:@"<null>"] || [temp isEqualToString:@"(null)"] || [temp isEqualToString:@""]) {
        temp = @"";
    }
    
    return temp;
    
}

宏定義:

/// 是否為空對象
#define kObjectIsNil(__object) ((nil == __object) || [__object isKindOfClass:NSNull.class])
#define kObjectIsNotNil(__object) (!kObjectIsNil(__object))
/// 字符串為空
#define kStringIsEmpty(__string) (kObjectIsNil(__string) || (__string.length == 0))
/// 字符串不為空
#define kStringIsNotEmpty(__string) (!kStringIsEmpty(__string))
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容