iOS - nil、Nil、NULL、NSNull介绍和开发中对象为空的判断

在开发中我们会经常遇到得数据为空的判断。
比如我们在获取地址省市区信息的时候,有时会因为某些市没有区的情况导致返回空<null>,如果这样进行网络请求会出现app奔溃的情况,所以这时候我们就要进行数据判断之后在去发送请求。

一、首先我们先对iOS开发中遇到的空值进行介绍:

  • nil :指向一个对象的空指针,nil是一个空对象,已经完全从内存中消失了

  • Nil :指向一个类的空指针(完全等同于nil 但是常用于类置空)

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

  • NSNull :通常表示集合中的类型(其实它也是一个对象,拥有有效的内存地址)[NSNull null]

二、对JSON返回的<null>进行判断

if([result isEqual:[NSNull null]]) {
    //result是从服务器返回的数据
    //在这里进行操作
}

三、对(null)的判断

if(result == nil) {
   //在这里进行操作
}

四、基本数据类型的空值判断

  • 对于类似于NSString类型的数据进行空值判断
  1、string == nil;
  2、[string isEqualToString:@""];
  • 对于类似于NSNumber类型的数据进行空值判断
  1、number == nil;
  2、[number isEqualToNumber:@0];
  • 对于类似于NSArray类型的数据进行空值判断
  1、array == nil;
  2、array.count = 0;
  • 对于类似于NSDictionary类型的数据进行空值判断
  1、[dictionary isEqual:[NSNull null]];
  2、dictionary.count = 0;
  • 对于对象类型的数据进行空值判断
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))
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容